记录一下微信小程序WSS配置的问题(服务器系统基于centos 7)
1.首先理解一个概念 wss =ws+ssl
因为小程序正式版连接必须是https。即http+ssl
ssl证书可以通过腾讯或者阿里巴巴的域名进行申请免费证书,免费证书三个月有效期。或者可以用宝塔系统生成。
https配置直接用宝塔生成的证书,然后启动https就OK这里不再叙述过程。
2.配置好https之后接下来
我用的是thinkphp5.1+gateway-wokerman做服务端。
composer 安装topthink/think-worker 2.0.*
thinkphp5.1 好像只支持2.0版本,3++的会报错。
安装好之后需要配置端口。
thinkphp根目录下 的config的gateway_server.php 配置好端口默认是8082
在thinkphp根目录下运行 php think worker:gateway
-------------------------------------------- WORKERMAN ---------------------------------------------
Workerman version:3.5.30 PHP version:7.1.33
--------------------------------------------- WORKERS ----------------------------------------------
proto user worker listen processes status
tcp root Register text://127.0.0.1:1236 1 [OK]
tcp root BusinessWorker none 1 [OK]
tcp root thinkphp websocket://0.0.0.0:8082 1 [OK]
----------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
看见以上信息代表成功
3.接下来配置 nginx的配置文档
server{
..........
.......
#默认的一些设置已省略
#关键配置如下 代理端口转协议 (一下配置是将http升级为https,因为ws 和http的握手协议是相通的所以我们只需要完成http握手就OK了,然后通过一下代理升级为+SSL的协议)
location /wss {
proxy_pass http://websocket/; # 代理到上面的地址去
proxy_read_timeout 60s;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'Upgrade';
}
}
upstream websocket {
server www.youryuming.com:8082;# 远程websocket服务器地址为 你的服务器域名:端口
}