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;
}
}
Ở trên sẽ phục vụ trực tiếp tất cả các tệp hiện có bằng Nginx (ví dụ: Nginx chỉ hiển thị mã nguồn PHP), nếu không sẽ chuyển tiếp một yêu cầu đến Apache. Tôi cần loại trừ các tệp * .php khỏi quy tắc để các yêu cầu cho * .php cũng được chuyển tới Apache và được xử lý.
Tôi muốn Nginx xử lý tất cả các tệp tĩnh và Apache để xử lý tất cả các nội dung động.
CHỈNH SỬA: Có cách tiếp cận danh sách trắng, nhưng nó không phải là rất thanh lịch, Hãy xem tất cả các phần mở rộng đó, tôi không muốn điều này.
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;
}
CHỈNH SỬA 2: Trên các phiên bản mới hơn của Nginx, hãy sử dụng try_files
thay thế http://wiki.nginx.org/HttpCoreModule#try_files