我有3个scala
和akka-http
应用程序,这些应用程序在ubuntu
机器上绑定到localhost
不同的端口。我想访问具有相同端口号的所有应用程序。所以我用nginx代理请求并在内部重定向到所需的端口号。 一切正常工作正常。现在,在每个应用程序中,我都内置了使用akka-http构建的websocket。所有WebSocket的请求将被具有网址.../WS/.. 如:在进行代理时Nginx上的Websocket升级头问题
App-1(HR)
Url => http://192.168.1.50:90/hr/ .... nginx resolve to localhost:8181
web socket url => http://192.168.1.50:90/hr/ws/...
App-2(Common)
Url => http://192.168.1.50:90/common/... nginx resolve to localhost:8182
web socket url => http://192.168.1.50:90/common/ws/...
App-3(accounts)
Url => http://192.168.1.50/accounts/.. nginx resolve to localhost:8183
web socket url => http://192.168.1.50:90/accounts/ws/...
的WebSocket是在我的机器工作正常,但是当我部署到Ubuntu的服务器,它给在WebSocket的错误。在检查日志之后,我发现了这个原因,当nginx代理完成时,它不会携带Upgrade
标头。因此,我在location
元素的nginx配置文件中进行了以下更改。
location /common {
location /common/global {
proxy_pass http://127.0.0.1:8182/common/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /common {
proxy_pass http://127.0.0.1:8182/common;
}
}
现在websocket工作正常。不过,我还需要将此添加到另外两个位置元素。 我不确定这是否是正确的做法。任何人都可以请用这个指导我吗?