我想使用 nginx 作为 websocket 连接的反向代理。
考虑 echo.websocket.org 成为我的后端 websocket 服务。作为测试客户端,我使用 wscat 来自 https://github.com/websockets/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 --> 后端 :
wscat -n --connect wss://localhost
使用以下 nginx 配置: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
和 proxy_ssl_certificate_key
如 Nginx Docs 中所述
关于nginx - 如何配置 nginx 反向代理以使用 SECURE websockets 上游?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54709446/