文章导读
搞技术,就是要追求极致。今天,我们就来聊聊如何在Nginx中配置WebSocket连接,让你同时支持wss和ws,实现安全的实时通信。读完这篇文章,你将掌握WebSocket的原理,学会如何在Nginx中配置SSL和wss,还能避开一些常见的坑点。
一、wss与nginx代理wss的理解
首先,我们要明白wss协议实际上是在WebSocket协议的基础上加入了SSL层,就像https是在http的基础上加入了SSL一样。
- 客户端发起wss连接到nginx。
- nginx将wss协议的数据转换成ws协议数据,并转发到Workerman的websocket协议端口。
- Workerman收到数据后进行业务逻辑处理。
- 当Workerman需要给客户端发送消息时,数据会经过nginx转换成wss协议,然后发送给客户端。
二、nginx配置ssl和wss
下面是一个Nginx配置SSL和wss的示例代码:
server {
listen 80;
listen 443 ssl;
server_name 域名;
ssl on;
ssl_certificate 证书.crt;
ssl_certificate_key 证书.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location /wss/ {
proxy_pass http://127.0.0.1:82/; #通过配置端口指向部署websocker的项目
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection
