好久没写博客了,最近在用swoole写本博客的一个聊天室,断断续续用了几周时间写好(主要还是太懒)。本地测试都还ok,今天上线,发现博客是用https的,ws 协议不被允许执行,唉
正好web服务器用的 Nginx,就想到了用 Nginx 代理一下,而且 博客域名也有证书,写一段代理就ok了。
因为ws(Websocket)是基于HTTP协议的,所以也可用标准的 80和443 端口。无非就是多了这两个东东
Upgrade: websocket Connection: Upgrade
所以,在代理的时候就要显示的加上这两个值
upstream wss_server_pool{ server 127.0.0.1:9501; } server{ listen 443 http2; server_name blog.jam00.com; ssl on; ssl_certificate cert/214299590960949.pem; ssl_certificate_key cert/214299590960949.key; ssl_session_timeout 30m; ssl_session_cache shared:SSL:10m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; #... #代理wss location /wss/ { proxy_pass http://wss_server_pool; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #... }
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
这两个就是重点啦,至于如何配置 https 请看 https://blog.jam00.com/article/info/11.html
这里用到了 Nginx 的upstream模块,可以设置多个后端ws服务,做负载均衡什么的
我的socket程序就是监听的 9501 端口
那么相应的,我的 wss 链接就为 wss://blog.jam00.com/wss/?token=77f01d39f0fec4ee909ac3968285cd0d
问号后面的不就不用管了,自定义的参数
完美
本博客的聊天室功能今天上线并已开启,只能登录帐号才可体验哦。
群聊界面
在线用户界面