1. WebSocket与Nginx代理的核心概念
第一次接触WebSocket时,我误以为它只是个加强版的HTTP轮询。直到实际开发在线聊天系统时,才发现这个协议的精妙之处——它能在单个TCP连接上实现全双工通信,就像给浏览器和服务器之间架了条双向高速公路。而Nginx作为反向代理界的瑞士军刀,处理WebSocket流量时却需要特别注意配置细节,否则就会出现连接秒断的尴尬情况。
普通ws协议就像明信片通信,所有内容都是明文传输。2010年我在开发股票行情推送系统时,就曾因为使用ws协议导致用户交易指令被中间人篡改。后来全面切换到wss(WebSocket Secure),相当于给明信片加了防拆信封,用SSL/TLS加密数据。这里有个常见误解:很多人以为wss是独立协议,其实它就是在ws基础上套了层SSL,类似http和https的关系。
Nginx代理wss的流程其实很有意思。当客户端发起wss连接时,请求先到达Nginx的443端口,经过SSL解密后,Nginx会把数据转换成ws协议转发给后端的WebSocket服务(比如Workerman或Socket.io)。返回数据时则相反,后端服务通过ws发送给Nginx,再由Nginx加密后以wss协议返回客户端。这个过程就像个双语翻译,在加密世界和明文世界之间架起桥梁。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从零开始配置Nginx支持wss
2.1 SSL证书准备与配置
去年帮某金融客户部署时,他们要求使用OV证书。这里分享个实用技巧:如果只是测试环境,用Let's Encrypt免费证书完全够用。但生产环境建议购买商业证书,我比较推荐DigiCert的兼容性。证书配置要注意三个关键文件:
- 证书链文件(.crt)
- 私钥文件(.key)
- 中间证书(CA bundle)
配置nginx.conf时,这几个参数最容易出错:
nginx复制ssl_certificate /path/to/fullchain.pem; # 证书链+主证书
ssl_certificate_key /path/to/privkey.pem; # 私钥文件
ssl_trusted_certificate /path/to/chain.pem; # 中间证书(可选但推荐)
2.2 关键Nginx配置详解
下
