Nginx 用作 Node 服务器前端的反向代理。Node 服务器有一个/ws
使用 WebSocket 的路径 ( ),此路径需要特殊设置。 /ws
不是目录,因此对它的请求不能带有尾部斜杠。正确的配置方法是什么?以下配置不起作用,但显示了预期效果。
location /service/ {
proxy_read_timeout 30s;
proxy_pass http://service:8080/;
# not working, requests are sent to http://service:8080/service/ws
# instead http://service:8080/ws
location /service/ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 36000s;
}
}
答案1
您当前正在使用嵌套位置,我不确定proxy_pass
内部块如何继承。您可以尝试两个独立的location
块,proxy_pass
每个块中都有一个显式的块:
location /service/ {
proxy_read_timeout 30s;
proxy_pass http://service:8080/;
}
location /service/ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 36000s;
proxy_pass http://service:8080/ws;
}