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

浏览器无法经Nginx连接远程WSS但wscat正常的故障排查

问题根因

两个核心配置错误导致浏览器WSS连接失败,wscat可正常连接是因为测试时使用了正确的协议:

  • 客户端连接协议错误:浏览器端代码使用ws://明文协议发起连接,但目标端口是Nginx监听的443 SSL端口,明文流量不符合TLS握手规范,直接触发Nginx日志里的SSL_do_handshake() failed ... bad cipher报错,请求根本没走到WebSocket转发逻辑。wscat测试时默认/手动指定了wss://加密协议,所以能完成握手。
  • Nginx配置指令冲突:反向代理location块中同时配置了proxy_pass和try_files $uri $uri/ =404;,后者是静态文件站点使用的指令,会优先查找本地文件,匹配不到直接返回404,不会把请求转发给后端Node服务,就算协议修正后也会连接失败。
  • 额外说明:你的架构是Nginx负责SSL卸载,后端Node.js服务跑在9090端口的明文WS服务不需要额外配置SSL证书,不需要在Node层做TLS相关改造。
修复步骤

1. 修正客户端连接代码

把客户端WebSocket连接的协议从ws改成wss,确保发起加密连接匹配443端口的SSL监听:

// 原代码:new WebSocket("ws:"+URL)
new WebSocket("wss:"+URL)

注意:如果URL本身已经带了HTTPS协议头,不需要手动指定443端口,浏览器会自动使用默认WSS端口发起连接。

2. 修正Nginx配置

删除location块中冲突的try_files $uri $uri/ =404;行,修正后的server块配置参考:

server {
    server_name CENSURED;
    access_log  /var/log/nginx/CENSURED.access.log;
    error_log  /var/log/nginx/CENSURED.error_log;

    location / {
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_pass http://localhost:9090;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # WebSocket 支持
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_cache_bypass $http_upgrade;
        proxy_read_timeout 86400;
    }

    listen [::]:443 ssl; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/CENSURED/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/CENSURED/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

配置修改完成后依次执行以下命令校验并重载配置:

# 校验配置语法是否正确
nginx -t
# 校验通过后重载Nginx生效
nginx -s reload

3. 验证结果

重载配置后清空浏览器缓存重试连接,即可正常建立WSS连接,Nginx不会再抛出SSL握手相关的错误日志。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 07:54:23