除非添加`try_files $ uri @proxy;`

时间:2017-01-17 06:49:34

标签: nginx

我正在使用Nginx部署代理,并且有点困惑。

以下是我的原始配置文件:

server {
    server_name xxx;
    listen 80;

    location @proxy {
            proxy_pass http://127.0.0.1:9099;
            proxy_pass_header Server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass_header Server;
            proxy_connect_timeout 3s;
            proxy_read_timeout 10s;
        }
}

导致404。

但是,如果我添加

try_files $uri @proxy;
location块之前

,即

server {
    server_name funfact.wechat.fantwan.com;
    listen 80;

    // The new line
    try_files $uri @proxy;

    location @proxy {
            proxy_pass http://127.0.0.1:9099;
            proxy_pass_header Server;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass_header Server;
            proxy_connect_timeout 3s;
            proxy_read_timeout 10s;
        }
}

然后一切都很顺利。

代码是从互联网上复制的,我不知道为什么会这样。我相信try_files正在尝试查找位于$uri的文件,但不清楚@proxy的含义,以及$xxx@xxx究竟是什么。

有人能给我一些解释吗?

1 个答案:

答案 0 :(得分:0)

NGINX beginners guide是开始学习NGINX的好地方。