出于某种原因,我在127.0.0.1:8081
上运行的Node.js应用需要/
。
如果我从这开始, /
和/projectb
可以加载页面。
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /projectb {
proxy_pass http://127.0.0.1:8081/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
当我将其更改为此时,/projectb
无法再完全加载页面。当我查看网络选项卡时,一些(但不是全部)请求失败,例如某些图像,.js,一些错误的端点。
server {
listen 80;
location /somethingelse {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /projectb { # I'd expect this to still work.
proxy_pass http://127.0.0.1:8081/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
总结一下,当我直接点击端口时123.456.78.910:8081
,当我有/
和/projectb
代理到http://127.0.0.1:8081/
,当我代理{ {1}}本身,但不是我自己代理/
时。
为什么会出现这种情况?
答案 0 :(得分:0)
如果location /projectb
在没有location /
的情况下无效,则表示location /projectb
未正确配置。您是否尝试删除location /projectb
以查看它是否仅适用于location /
?
你的nginx应该代理请求的端点是什么?是http://127.0.0.1:8081/
还是http://127.0.0.1:8081/projectb
?我感觉它是http://127.0.0.1:8081/projectb
。
请尝试从第二个代码段中的proxy_pass http://127.0.0.1:8081/;
行删除尾部斜杠。