我正在尝试让nginx 总是代理某些请求,即使存在静态文件也是如此。我有代理工作正常,除非nginx似乎坚持服务文件的静态版本,即使已声明代理指令。
因此,在下面的配置中,如果存在一个名为“/siteroot/static/members/page.html”的文件,它将(错误地)直接提供而不是代理,但如果我删除该文件,则代理继续进行预期。如何强制nginx始终代理?
我正在运行nginx 0.7.67,这是完整的配置:
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log logs/access.log;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
}
server {
listen 80;
server_name .XXX.net .XXXnet.net;
server_name_in_redirect off;
location ^~ /members {
access_log logs/members-access.log;
proxy_pass http://127.0.0.1:5010;
}
location ^~ /search {
access_log logs/search-access.log;
proxy_pass http://127.0.0.1:5010;
}
location / {
root /siteroot/static;
}
# redirect server error pages to the static page /50x.html
error_page 404 %(ROOT)s/web/XXX/public/404.html;
error_page 500 502 503 504 %(ROOT)s/web/XXX/public/50x.html;
}
答案 0 :(得分:1)
在打开nginx调试之后,事实证明nginx正确地反向代理到后端应用程序。后端Pylons应用程序按原样提供静态文件,而不是执行控制器。 Nginx似乎运作正常。