Nginx에는 try_files
"파일의 존재 여부를 순서대로 확인하고 발견 된 첫 번째 파일을 리턴하는"구성 지시문이 있습니다. 이 작업을 수행하는 것이 매우 깔끔합니다.
location ~* \.(gif|jpe?g|css|js)$ {
try_files $uri 404;
}
이는 웹 프레임 워크를 방해하지 않고 정적 파일을 직접 제공하는 안전한 방법입니다. Apache에서 동일한 작업을 어떻게 수행 할 수 있습니까?
Nginx에는 try_files
"파일의 존재 여부를 순서대로 확인하고 발견 된 첫 번째 파일을 리턴하는"구성 지시문이 있습니다. 이 작업을 수행하는 것이 매우 깔끔합니다.
location ~* \.(gif|jpe?g|css|js)$ {
try_files $uri 404;
}
이는 웹 프레임 워크를 방해하지 않고 정적 파일을 직접 제공하는 안전한 방법입니다. Apache에서 동일한 작업을 어떻게 수행 할 수 있습니까?
답변:
나는 보통 mod_rewrite를 사용하여 이것을 본다.
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
"파일이 파일 시스템에 존재하지 않으면, mod_proxy_balancer 클러스터를 통해 파일을 프록시하십시오." 그렇지 않으면 파일이 파일 시스템에 존재하면 DocumentRoot
가상 호스트에 정의 된 것과 관련하여 Apache에 의해 제공됩니다 .
그러나 그것은 내가 좋아하는 방법이 아닙니다. 주로 stat
요청 당 시스템 호출 이 필요하기 때문입니다 .
mod_proxy를 사용 ProxyPassMatch
하면 새로운 버전의 Apache가있는 경우 사용할 수 있습니다 ( 문서 참조 ). 같은 :
ProxyPassMatch \.(gif|jpe?g|css|js)$ !
어느 것을 사용합니까! Apache가 정규 표현식과 일치하는 요청을 프록시 해서는 안됨 을 나타냅니다 .
이전 버전의 Apache를 사용하는 경우 ProxyPass
지시문을 사용할 수 있지만 URI 접두사와 만 일치합니다 (현재 선호하는 방법입니다).
ProxyPass /images !
ProxyPass /stylesheets !
물론 위에서 언급 한대로 정규식 일치를 수행해야하는 경우 상단에 게시 한 mod_rewrite 규칙을 수정하여에 대한 일치를 무효화 할 수 %{REQUEST_URI}
있습니다.
희망이 도움이됩니다!
try_files
파일의 존재를 확인하기 때문에 와 비슷하다고 생각 합니다. ProxyPass
그래도 그것을 할 수있는 방법이없는 것 같습니다 .