我希望使用nginx作为websocket连接的反向代理。
考虑将echo.websocket.org作为我的后端websocket服务。作为测试客户端,我使用https://github.com/websockets/wscat中的wscat。
以下内容有效:
客户端 <-- ws --> 后端:wscat --connect ws://echo.websocket.org
客户端 <-- wss -->:wscat --connect wss://echo.websocket.org
客户端 <-- ws --> 代理 <-- ws --> 后端:wscat --connect ws://localhost
,需要使用以下nginx配置:
events {
}
http {
server {
listen 80;
location / {
proxy_pass http://echo.websocket.org;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
}
客户端 <-- wss --> 代理 <-- ws --> 后端:使用以下nginx配置
wscat -n --connect wss://localhost
events {
}
http {
server {
listen 443 ssl;
ssl_certificate /pki/cert.pem;
ssl_certificate_key /pki/key.pem;
location / {
proxy_pass http://echo.websocket.org;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
}
我希望并需要帮助配置nginx以使用安全的WebSockets连接到后端。我想要这个配置:
客户端 <-- wss --> 代理 <-- wss --> 后端
我尝试更改http://echo.websocket.org为https://echo.websocket.org,但没有成功。这导致504网关超时。
proxy_ssl_certificate
文档和Securing HTTP Traffic to Upstream Servers guide... 它应该(很可能)同样适用于WebSockets。 - Myst