驽马十驾 驽马十驾

驽马十驾,功在不舍

目录
阿里云 SLB 下部署 Websocket 的 wss 协议小记
/  

阿里云 SLB 下部署 Websocket 的 wss 协议小记

开篇

Websocket的协议分为未加密版本ws和加密版本wss,线上的产品为了安全,建议使用wss

当前的IM是第一版的单机部署,并且流量都是通过SLB转发的到某一台固定的服务器,同时该服务器上还部署了一个Nginx来进行流量转发。

Client → SLB →  Nginx  →  WB-Server

此处特别注意阿里与的共享SLB是不是支持 Websocket的哦。

设置

假设如下情形:

  • websocket域名https://im.domain.com/ws
  • Nginx监听端口是 1234
  • Websocket-Server监听的端口是6666

具体内容如下所示

Client → SLB:443 →  Nginx:1234  →  WB-Server:6666

那么我们需要经过如下几个步骤

  1. SLB 绑定域名im.domain.com,并建立HTTPS443监听

小技巧:在 SLB 上绑定通配符域名,再利用转发策略来处理具体的映射,这样就可以让这个SLB通过扩展域名管理来绑定更多的域名

  1. 新建虚拟服务器组wb,添加对应的服务器,再将其端口设置为1234
  2. 配置转发策略:其中域名填写im.domain.com,url 填写ws,虚拟服务器绑定提供IM的服务器。
  3. IM服务器所在的Nginx上,配置如下信息
upstream IMServer {
    server 192.168.0.11:6666;
}

server {
    listen 1234;
    server_name im.domain.com;
    access_log /var/log/nginx/logs/im/access.log main;

    location /ws {
        #head 请求不记录日志
        if ($request_method = HEAD) {
            access_log off;
        }
        #反向代理的后端地址
        proxy_pass http://IMServer;
        real_ip_header X-Forwarded-For;
        #设置主机头和客户端真实地址,以便服务器获取客户端真实IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #禁用缓存
        proxy_buffering off;
        # 升级http1.1到 websocket协议
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
  1. 重新加载 Nginx的配置文件。
  2. 测试是否可以连接上

结语

上面就是一次简单的运维记录,有问题,可以留言沟通!

2020年06月04日21:35:49 下班

骐骥一跃,不能十步。驽马十驾,功在不舍。