我正在使用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
究竟是什么。
有人能给我一些解释吗?