Nginx反向代理:上游服务器上的一个path的特殊设置

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; }