WS转WSS协议

2020-05-18  本文已影响0人  廖宇亮

1、场景

在微信小程序的直播室里实现即时聊天功能,通过简单的websocket实现实时通讯,一开始使用的协议是ws://。后来因为微信小程序只支持wss协议,所以需要转为wss协议实现websocket连接。

2、前提

要完成转wss协议,需要的步骤:1、申请一个域名;2、一台公网服务;3、域名绑定;4、为域名申请SSL证书;5、配置Nginx代理。
前面的三步已经完成。

3、为域名申请SSL证书,使用的是腾讯云

3.1、云产品->SSL证书,选择免费证书

image.png

3.2、输入通用名称和申请邮箱,通用名称就是你的域名,申请邮箱就是你申请域名时使用的邮箱

image.png

3.3、选择自动DNS验证,然后确认申请

4、配置Nginx代理实现WS转WSS协议

4.1、nginx引入SSL这模块,如果没有引入会报nginx:[emerg]unknown directive ssl这个错误提示

4.1.1、进入nginx解压目录,执行./configure --with-http_ssl_module命令,添加SSL模块

4.1.2、执行make命令重新编译

4.1.3、在我们执行完做命令后,我们可以查看到在nginx解压目录下,objs文件夹中多了一个nginx的文件,这个就是新版本的程序了。首先我们把之前的nginx先备份一下,然后把新的程序复制过去覆盖之前的即可。

例如:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx

4.2、配置HTTPS server

server {
         listen       443;
         server_name  zyzhuiyi.xyz;
     
     ssl    on;
         ssl_certificate      /etc/nginx/1_zyzhuiyi.xyz_bundle.crt;
         ssl_certificate_key  /etc/nginx/2_zyzhuiyi.xyz.key;

         ssl_session_cache    shared:SSL:1m;
         ssl_session_timeout  5m;

         ssl_ciphers  HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers  on;

         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 zyzhuiyi.xyz:8888;  #这里可以是多个服务端IP(分多行),设置权重就可以实现负载均衡了
    }   
上一篇下一篇

猜你喜欢

热点阅读