location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if (-f $request_filename) {
access_log off;
expires 30d;
break;
}
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:8080; # backend server listening
break;
}
}
위는 Nginx를 사용하여 모든 기존 파일을 직접 제공합니다 (예 : Nginx는 PHP 소스 코드 만 표시). 그렇지 않으면 Apache에 요청을 전달합니다. * .php에 대한 요청도 Apache로 전달되고 처리되도록 규칙에서 * .php 파일을 제외해야합니다.
Nginx가 모든 정적 파일을 처리하고 Apache가 모든 동적 항목을 처리하기를 원합니다.
편집 : 화이트리스트 접근 방식이 있지만 매우 우아하지는 않습니다. 모든 확장 기능을 참조하십시오.
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
access_log off;
expires 30d;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
편집 2 : Nginx의 최신 버전에서 try_files
대신 http://wiki.nginx.org/HttpCoreModule#try_files 사용