
Websocket的协议分为未加密版本ws和加密版本wss,线上的产品为了安全,建议使用wss。
当前的IM是第一版的单机部署,并且流量都是通过SLB转发的到某一台固定的服务器,同时该服务器上还部署了一个Nginx来进行流量转发。
Client → SLB → Nginx → WB-Server
此处特别注意阿里与的共享SLB是不是支持 Websocket的哦。
假设如下情形:
websocket的 域名 是https://im.domain.com/wsNginx监听端口是 1234Websocket-Server监听的端口是6666具体内容如下所示
Client → SLB:443 → Nginx:1234 → WB-Server:6666
那么我们需要经过如下几个步骤
SLB 绑定域名im.domain.com,并建立HTTPS的443监听小技巧:在 SLB 上绑定通配符域名,再利用
转发策略来处理具体的映射,这样就可以让这个SLB通过扩展域名管理来绑定更多的域名
wb,添加对应的服务器,再将其端口设置为1234转发策略:其中域名填写im.domain.com,url 填写ws,虚拟服务器绑定提供IM的服务器。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";
}
}
Nginx的配置文件。上面就是一次简单的运维记录,有问题,可以留言沟通!
2020年06月04日21:35:49 下班