使用nginx来代理websocket, 以及wss证书

正文

如果域名配置了证书, 通过nginx代理, 那websocket就不能用ws, 控制台会报错: The page at '***' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws

所以配置如下.

  1. 修改ws, 改为wss, wss://你的域名/wss
  2. 修改nginx:
                location /wss {
                        proxy_pass http://ws的原地址ip:端口号/;
                        proxy_connect_timeout 4s;
                        proxy_read_timeout 7200s;
                        proxy_send_timeout 12s;
			#     proxy_http_version 1.1;  很多博客都有这个配置, 可以先不配

                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                }

  1. 重启nginx

遇到问题

404问题

  1. location后面不要加斜杠. 比如: location /wss/ , 虽然这样不会再报404, 但是会报301
  2. 前端的配置中, ws地址不要有斜杆后缀, 如wss://xxx.xx/ws/ , 和location保持一致
  3. proxy_pass看情况. 如果ws服务器的接口地址, 就是ip:port/ , 那proxy_pass也是一样, http://ip:port/ 有后缀斜杠. 如果是其他的, 如 ip:port/aa.do, 则proxy_pass也是这个

301问题
基本就是上面的1点造成的

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值