• Nginx反向代理+Websocket 导致找不到请求路径 No handler found for GET


    1、网络环境

    Nginx作为前端服务器,并且为解决跨域问题对后台服务做了反向代理。

    2、所有http请求都好着,Websocket后台提示“No handler found for GET”,找不到服务路径。

     3、通过全网查询,最后解决办法,在反向代理location中增加

    location /lawAccept/ {
            proxy_set_header Connection 'upgrade';
            proxy_set_header Upgrade $http_upgrade; 
            proxy_pass http://localhost:8085/lawAccept/; 
    }            

    4、参数解释

    访问websocket时的链接通常为

    socket = new WebSocket("ws:192.168.2.24:8080/oneAccept/evalwebsocket/")

    此时协议信息如下

    HTTP/1.1 101 Switching Protocols
    Upgrade: websocket
    Connection: Upgrade
    Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
    Sec-WebSocket-Protocol: chat

    通过与http请求头对比,发现多了

    Upgrade: websocket
    Connection: Upgrade

    此种用法使用的协议为ws协议,必须借助http做第一次握手,现在前端和后端增加了nginx作为代理,则需要在nginx中将使用的ws协议让后端知晓

    proxy_set_header Connection 'upgrade';  //告诉接收端,要进行协议升级

    proxy_set_header Upgrade $http_upgrade; //升级为websocket

  • 相关阅读:
    【字符比较】文件内容比较方法
    【linux】ubuntu修改系统时间
    【常用脚本记录3 -- 磁盘读写脚本】
    【常用脚本记录2---压力测试脚本】
    Shell脚本相关
    cifs
    【cli命令集】
    【wlan】iw命令集合
    【实用linux命令记录】
    iOS----------关于Cornerstone的偏好设置
  • 原文地址:https://www.cnblogs.com/lansetuerqi/p/15936424.html
Copyright © 2020-2023  润新知