美文网首页
WS转WSS协议

WS转WSS协议

作者: 廖宇亮 | 来源:发表于2020-05-18 17:45 被阅读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(分多行),设置权重就可以实现负载均衡了
        }   
    

    相关文章

      网友评论

          本文标题:WS转WSS协议

          本文链接:https://www.haomeiwen.com/subject/dfpkgctx.html