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配置如下 --

-- 后端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 / {} 站点的其它配置... --
}