我有一个奇怪的问题,它只影响我正在研究的一个本地应用程序 - 使用这种方法的其他应用程序似乎工作正常(Ghost).这是来自我的Nginx服务器配置:
location @node_proxy {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5000;
}
location / {
try_files @node_proxy =404;
}
Run Code Online (Sandbox Code Playgroud)
正如我所说,我有Ghost运行与此相同,它表现良好.但是对于这个配置,它会导致每个请求都是404 - 它似乎永远不会命中代理.我检查了日志,这证实了我的怀疑,访问或错误日志中没有条目.
我在这个实例中代理的应用程序只是一个简单的基于Express的节点应用程序,所以没有什么复杂的.访问http://127.0.0.1:5000我看到了预期的结果.
如果我将配置更改为:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $host;
proxy_redirect off;
proxy_pass http://127.0.0.1:5000;
}
Run Code Online (Sandbox Code Playgroud)
它按预期工作,但我想使用命名位置,以避免重复代理声明.
我错过了一些明显的事吗?
尝试这种黑客:
location @root {
...
}
location / {
error_page 418 = @root; return 418; # redirect to @root
}
Run Code Online (Sandbox Code Playgroud)
似乎不可能从常规位置跳转到命名位置。您也可以尝试try_files @root @root,但是 Igor Sysoev(nginx 的作者)说这样error_page更好,因为它使用的资源更少。
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |