nginx 转发websocket

avatar 2023年8月10日18:17:53 评论 101 次浏览

要在 Nginx 中转发 WebSocket 连接,需要对其进行一些特殊的配置。以下是一个简单的示例:

 http {
     upstream websocket {
         server localhost:3000;
     }
     server {
         listen 80;
         location /websocket {
             proxy_pass http://websocket;
             proxy_http_version 1.1;
             proxy_set_header Upgrade $http_upgrade;
             proxy_set_header Connection "Upgrade";
         }
     }
 }

在这个示例中,我们首先定义了一个名为 websocket 的 upstream 服务器,它指向本地运行的 WebSocket 服务器。

然后,我们创建了一个新的虚拟主机,并将其绑定到端口 80 上。在该虚拟主机中,我们定义了一个新的位置(/websocket),用于接收所有 WebSocket 请求。

最后,在该位置上,我们使用 proxy_pass 指令将请求转发给 websocket upstream,并使用 proxy_http_versionproxy_set_header Upgradeproxy_set_header Connection "Upgrade" 来启用 WebSocket 支持。

请注意,如果您的 WebSocket 服务器需要通过 HTTPS 进行连接,则需要使用 SSL/TLS 终止器来处理加密层。在这种情况下,请确保在 Nginx 配置文件中添加正确的 SSL/TLS 设置。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: