nginx现在支持代理websocket,但我无法找到任何有关如何执行此操作的信息,而无需单独使用位置块,该块适用于使用websockets的URI。nginx反向代理websocket
我见过一些人推荐这种方法的一些变化:
location/{
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://host:port;
}
请问这是正确的方式来代理标准的HTTP以及WebSockets的?我不希望升级头或连接设置为“升级”,除非浏览器发送了这些内容,但这些proxy_set_header行是websockets工作所必需的。为什么nginx不转发原始的升级/连接头?
我对此进行了实验,发现如果没有两个proxy_set_header行运行,nginx不会代理Upgrade标头,并将Connection标头从'upgrade'更改为'close'。在他们看来,Connection对于非websocket请求是“升级”的,这也是不好的。
谢谢:)