Nginx版本使用最新Stable版本,如果是旧版本,查询一下是否支持websocket代理。
WS普通Websocket代理,WSS是Https格式的。下面示例。表示两者都可以使用。如果强制WSS,可以在Location之前加一下Rewrite。
比如:
rewrite ^(.*)$ https://$host$1 permanent里面模拟的是用户访问一台Nginx服务器,Nginx代理后面一台真实服务器。
如果只是一台机器上设置也是类似的。
此外里面的域名和端口和证书,日志名称之类的根据自己的情况来定。
这个文件保存成一个name.conf在Nginx.conf中include即可。
upstream yourserver {ip_hash
server 172.16.10.10 weight=1 max_fails=2 fail_timeout=2
}
server {
listen 镇散 80
listen 443
server_name yoursever.domain.com
ssl on
ssl_certificate /etc/ssl/certs/yourname.crt
ssl_certificate_key /etc/ssl/certs/yourname.key
ssl_session_timeout 5m
ssl_session_cache shared:SSL:50m
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
ssl_prefer_server_ciphers on
proxy_pass http://yourserver
proxy_redirect off
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_read_timeout 3600s
proxy_send_timeout 3600s
伍并proxy_http_version 1.1
proxy_set_header Upgrade $http_upgrade
proxy_set_header Connection "upgrade"
腔旅迹 access_log /var/log/nginx/yourserver.log main
}
项目场景:
一个im项目在测试准备上线的时候,发现微信小程序在正式行或尺阶段团衫只支持wss协议
问题描述:
提示:发现微信小程序在正式阶段只支档高持wss协议,由于通信采用https,所以ws协议无法直接使用,测试开发阶段可以采用ws协议进行
原因分析:
原因在于https和http不能混合使用,wss和ws也是对应的,https下无法使用http和ws协议
解决方案:
于是想到采用nginx代理的方式进行协议转换,解决通信问题,这样既不用修改服务端代码,也不需要修改客户端代码,一举多得。
话不多说,上nginx配置:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)