Apache의 Rewrite는 JkUnMount보다 먼저 동작한다. 이 사실을 모르면 Step 1의 효과가 무력화될 수 있다.
Apache 요청 처리 단계 (간략):
1. URL 정규화
2. mod_rewrite 적용 (RewriteRule)
3. <Location> / <Directory> 매칭
4. JkMount / JkUnMount 평가
5. 실제 처리 (Tomcat 또는 Apache 직접)
mod_rewrite가 2단계, JkMount/JkUnMount가 4단계.
즉 Rewrite가 /resources/...를 /ott/resources/...로 바꿔버리면, 4단계에 도착할 때는 이미 다른 경로다.
JkUnMount의 /resources/* 패턴은 더 이상 매칭되지 않는다.
# Step 1만 적용한 상태
Alias /resources /srv/webapp/your-app/static
JkUnMount /resources/* worker1
JkMount /* worker1
# 그런데 사이트 진입 처리용 Rewrite가 있다
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/ott
RewriteRule "^(.*)$" "/ott/$1" [R,L]/resources/css/main.css 요청이 들어오면:
- Rewrite 평가:
/resources/css/main.css가/ott/...로 시작 안 함 → 룰 적용 - 변환:
/ott/resources/css/main.css로 리라이트 + 301 리다이렉트 - 클라이언트가 새 URL로 재요청:
/ott/resources/css/main.css - JkUnMount 평가: 이 URL은
/resources/*패턴 매칭 안 됨 → Tomcat으로 감
결국 정적 리소스가 다시 Tomcat을 거치게 됨.
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/ott
RewriteCond %{REQUEST_URI} !^/resources # 추가
RewriteCond %{REQUEST_URI} !^/files # 추가
RewriteRule "^(.*)$" "/ott/$1" [R,L]!^/resources = "URI가 /resources로 시작하지 않을 때만 룰 적용".
조건이 누적되어 정적 경로는 Rewrite가 건너뛴다.
# RewriteLog 활성화 (임시)
# httpd.conf 또는 vhost
LogLevel rewrite:trace3# 재기동 후 정적 리소스 요청
curl -I https://your-domain.example/resources/css/main.css
# error_log에 다음 패턴이 보이면 정상
tail -f /usr/local/httpd/logs/error_log
# "RewriteCond: input='/resources/css/main.css' pattern='!^/resources' => not-matched"
# "RewriteRule: ... not applied"not applied가 보이면 Step 2 성공. 정적 경로는 더 이상 Rewrite가 건드리지 않는다.
운영 환경에 따라 여러 Rewrite 룰이 있을 수 있다. 정적 경로를 건드릴 가능성이 있는 룰을 모두 점검.
# 예 - 사용자 도메인 / 어드민 도메인 분리
<VirtualHost *:443>
ServerName www.example.com
RewriteCond %{REQUEST_URI} !^/ott
RewriteCond %{REQUEST_URI} !^/resources
RewriteCond %{REQUEST_URI} !^/files
RewriteRule "^(.*)$" "/ott/$1" [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName admin.example.com
# 어드민 도메인은 다른 Rewrite (있다면)
RewriteCond %{REQUEST_URI} !^/admin
RewriteCond %{REQUEST_URI} !^/resources # 동일하게 추가
RewriteRule "^(.*)$" "/admin/$1" [R,L]
</VirtualHost>VirtualHost 각각의 Rewrite를 모두 보호.
Step 1과 합쳐서 본인 환경에서 정적 응답이 0.07초 → 0.045초 수준으로 개선. 나머지는 Step 3·4에서 "더 끌어올리는" 영역.
다음 단계 → 04-ajp-thread-pool.md