侧边栏壁纸
博主头像
zzzgd博主等级

一忘皆空!

  • 累计撰写 18 篇文章
  • 累计创建 11 个标签
  • 累计收到 15 条评论

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

zzzgd
2021-06-25 / 0 评论 / 0 点赞 / 300 阅读 / 948 字
温馨提示:
本文最后更新于 2021-07-05,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

正文

如果域名配置了证书, 通过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点造成的

0

评论区