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

配置Let's Encrypt证书与Nginx后无法通过WSS连接WebSocket

解决WSS协议无法连接WebSocket的问题

核心排查与修复步骤

WSS连接失败但WS正常,说明Nginx的HTTPS配置中WebSocket转发规则存在缺失或错误,以下是具体解决方法:

1. 完善HTTPS Server块的WebSocket转发配置

在你的HTTPS server块中,针对WebSocket请求路径添加完整的转发规则:

location /your-ws-path {
    proxy_pass http://your-backend-address:port; # 替换为实际的WebSocket后端地址
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
  • 注意:/your-ws-path必须与前端WSS请求的路径完全匹配,后端地址要指向正常运行的WebSocket服务。

2. 验证SSL证书配置正确性

确保HTTPS server块中Let's Encrypt证书配置无误:

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/your-domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
  • 确认证书文件路径正确,且Nginx进程拥有读取这些文件的权限。

3. 检查端口与防火墙规则

  • 确保服务器443端口已开放,防火墙(如ufw、iptables)允许443端口的TCP流量通过。
  • 验证WebSocket后端服务正常监听,且Nginx服务器能直接访问到后端服务地址。

4. 测试与日志排查

  • 重启Nginx使配置生效:sudo systemctl restart nginx
  • 查看Nginx错误日志定位问题:sudo tail -f /var/log/nginx/error.log
  • 用浏览器开发者工具的Network面板,查看WSS请求的错误状态码(如404、502),辅助判断问题点。

常见错误原因

HTTPS server块中缺少proxy_http_version 1.1以及Upgrade、Connection请求头的配置,是导致WSS握手失败的最常见因素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:33:14