Nginx被用作Node服务器前面的反向代理。 节点服务器有一个使用WebSocket的path( /ws
),这个path需要特殊的设置。 /ws
不是一个目录,因此对它的请求不能有一个结尾的斜杠。 什么是正确的方式来configuration这个? 以下configuration不起作用,但显示了意图。
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; } }
您目前正在使用嵌套的位置,我不知道如何proxy_pass
被内部块inheritance。 您可以在每个块中使用显式proxy_pass
尝试两个独立的location
块:
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; }