注意,此问题已从superuser
移至stackoverflow我得到了以下nginx conf:
server {
listen 80;
listen 443 ssl;
...
# specific rule to serve versioned js resources
location ~ ^/js/([0-9\.]+)/(.*)$ {
alias /opt/x/public/deploy/js/$1/$2;
}
location / {
add_header P3P 'CP="CAO PSA OUR"';
proxy_pass http://127.0.0.1:8088;
set $ssl off;
if ($scheme = https) {
set $ssl on;
}
proxy_set_header X-Forwarded-Ssl $ssl;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
它按预期工作。但是,如果已部署的目录中不存在某个版本化的js资源,例如/opt/x/public/deployed/js/1.1/
,则它将返回404
。我想要的是在这种情况下,nginx应将请求传递给在8088
端口运行的后端服务,而不是返回404
。这甚至可行吗?
谢谢! 绿色
答案 0 :(得分:1)
http://wiki.nginx.org/HttpCoreModule#try_files
try_files是你的朋友,在这里你可以做你想要尝试文件的顺序,并最终在上游使用proxypass。