# Nginx 支持 WSS协议

# 背景

最近在配置一个web代理服务,除了http代理外,还需配置wss协议代理。这篇博客记录一下如何使用nginx配置wss代理。

# 配置

如何配置Nginx支持WSS协议。

location /websocket {
   proxy_pass http://backend_server;  # WebSocket后端的地址
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_set_header Host $host;
}

location /websocket: 这定义了Nginx将代理的WebSocket的路径。这个路径应该与你的前端应用程序中使用的WebSocket路径匹配。

proxy_pass http://backend_server;: 这是WebSocket后端服务器的地址,Nginx会将所有WebSocket连接请求转发到这个地址。这个设置非常关键,因为它指定了WebSocket流量的目的地。

proxy_http_version 1.1;: 这一行确保Nginx使用HTTP/1.1协议来代理WebSocket连接。WebSocket要求使用HTTP/1.1或更高版本。

proxy_set_header Upgrade $http_upgrade;: 这个设置告诉Nginx将Upgrade标头设置为与客户端请求中的相同值,通常是"websocket"。这是WebSocket握手的一部分。

proxy_set_header Connection "upgrade";: 这个设置告诉Nginx将Connection标头设置为"upgrade",以确保WebSocket连接可以成功升级。

proxy_set_header Host $host;: 这一行将请求的Host标头设置为与客户端请求中的相同值,以确保WebSocket连接的目标主机信息正确传递。

这些设置是确保Nginx正确代理WebSocket流量所必需的。确保按照需要修改location中的路径和proxy_pass中的后端服务器地址,以适应你的具体应用场景。