Nginx 配置, try_files 和 add_header 在同一个 location 中, add_header 不生效的问题

2016-03-18 04:39:06 +08:00
 Had

一个 Nginx 配置文件如下:

server {
    listen 80;
    server_name ab.cd;
    index index.html;
    root /path/public;

    location @xx {
        proxy_pass http://10.0.0.1:8080;
    }

    location / {
        try_files $uri @xx;
    }

    location /special {
        add_header XX HEADER1;
        try_files $uri @xx;
    }
}

但是如果你去请求 /special 的话,会发现其实 add_header 并没有生效,所以 /special 的部分又不得不改写为:

    location /special {
        add_header XX HEADER1;
        if (!-f $request_filename) {
            proxy_pass http://10.0.0.1:8080;
            break;
        }
    }

虽然这样 add_header 可以工作了,但是老实说,不好看。 大家有什么好的解决方案吗?

谢谢。

3063 次点击
所在节点    程序员
1 条回复
Had
2016-03-19 11:32:09 +08:00
然而并没有人可以回答?
唔。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/264360

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX