0

请注意,此问题已从超级用户移至 stackoverflow

我得到了以下 nginx 配置文件:

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。这甚至可行吗?

谢谢!绿色的

4

1 回答 1

1

http://wiki.nginx.org/HttpCoreModule#try_files

try_files 是你的朋友,在这里你可以按照你想要的顺序来尝试文件,最后让 proxypass 上游。

于 2013-09-10T06:19:38.400 回答