Nginx反代wss协议配置


前提条件及准备工作

  1. 已经安装nginx,版本不低于1.3
  2. 假设Workerman监听的是7272端口(websocket协议)
  3. 已经申请了证书(pem/crt文件及key文件)
  4. 打算利用nginx开启443端口对外提供wss代理服务(端口可以根据需要修改)
  5. nginx一般作为网站服务器运行着其它服务,为了不影响原来的站点使用,这里使用地址 域名/wss 作为wss的代理入口。也就是客户端连接地址为 wss://域名/wss
  6. wss在线测试网站 http://www.blue-zero.com/WebSocket/
  7. 在线生成证书网站 https://freessl.cn/

Nginx配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
后端workerman集群,7272端口,websocket协议
upstream websocket {
server 172.31.7.240:7272;
server 172.31.0.163:7272;
}
定义https配置
server {
listen 443 ssl;

ssl_certificate /etc/nginx/conf.d/server.pem;
ssl_certificate_key /etc/nginx/conf.d/server.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:50m;
ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
来自域名/wss的访问都代理到workerman集群
location /wss
{
proxy_pass http://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 $remote_addr;
}
location / {} 站点的其它配置...
}