如何配置 nginx 转发 ws wss

问题

我有一个 ws 项目,地址在 ​​ws://localhost:9999 ​​​ 现在我需要使用 nginx 将它转发到 ​​wss://kylebing.cn/ws​​ 上

nginx 配置

假设你已经使用 nginx 配置好了 https,也就是我的情况,来说一下如何转发 ws 到 wss
我服务器的 nginx 配置有两个文件 ​​​default.conf​​​ 和 ​​https.conf​​​,配置 ​​https.conf ​​ 文件,添加如下内容,在 server 的外层添加

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream ws_server {
server localhost:9999;
}

在 443 的内层添加 ​​location /ws​​ 这个内容

server {
listen 443 ssl;
server_name kylebing.cn;

# 此处省略其它一些配置...

location /ws {
proxy_pass http://ws_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

这样重启服务,就能转发 ​​ws://kylebing.cn:9999​​​ 的服务到 ​​wss://kylebing.cn/ws​​ 了

如何配置 nginx 转发 websocket ws wss_服务器