You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置WebSocket与WSS代理问题排查

问题根源:端口与WebSocket协议的配置对应错误

你当前的Nginx配置里,两个server块的协议和端口对应关系完全搞反了:

  • 15459端口的server块未启用SSL:这个端口只能处理普通的WebSocket(ws://)连接——它的listen指令没有带ssl参数,也没有配置SSL证书。当你用WSS(wss://)连接这个端口时,客户端会发起SSL握手请求,但Nginx该端口根本不支持SSL,握手直接失败,导致连接无法建立。
  • 15359端口的server块已启用SSL:这个端口是专门用来处理WSS(wss://)连接的,你说“用普通WebSocket连接15359正常”大概率是表述混淆——实际上应该是用wss://连接15359能正常工作,而ws://连接15359理论上会因为SSL握手失败报错,可能你误把WSS当成了普通WebSocket。

修正方案

根据你的需求二选一即可:

方案1:让15459端口提供WSS服务

修改第一个server块,添加SSL相关配置:

server {
    listen 15459 ssl; # 加上ssl参数
    ssl_certificate /etc/ssl/certs/topaz_wss.crt;
    ssl_certificate_key /etc/ssl/private/topaz_wss.key;
    ssl_protocols       TLSv1.1 TLSv1.2;
    ssl_session_timeout 5m;

    location / {
        proxy_pass http://localhost:15259;
        proxy_redirect off;
        proxy_pass_request_headers on;

        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection Upgrade;
    }
}

如果不需要15359的WSS服务,可以删除第二个server块,或者把它改成普通WS端口(去掉ssl参数和证书配置)。

方案2:保持现有端口配置,修正连接方式

  • 用ws://连接15459端口(普通WebSocket)
  • 用wss://连接15359端口(安全WebSocket)

额外提示

如果需要同时提供WS和WSS服务,当前两个server块的结构是可行的,只要确保:

  • 普通WS端口的listen不带ssl,无证书配置
  • WSS端口的listen带ssl,且配置好证书

内容的提问来源于stack exchange,提问作者user3161584

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:43:18