前台通过nginx连接wildfly13启动的后台(websocket连接),连接不到后台。

前台服务器通过nginx连接wildfly13启动的后台服务器(websocket连接),连接不到后台。服务器之间没有网络因素,换了好多次端口,还是不行,如果不通过Nginx,直接前后台服务器建立连接就可以,求大佬解惑~

1个回答

如果希望使用nginx作为websocket协议的负载均衡,需要单独添加websocket协议支持。正常我们配置的nginx只能支持http协议,应该是这个问题导致的。

    server {
    listen 80;
    server_name xxx.com;
    location /u/ {
        # 反向代理透传客户端ip
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:8001;
        proxy_redirect off;
    }

    location /c/ {
        proxy_pass http://127.0.0.1:8002;
        # WebScoket Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Origin xxx;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    }
}
weixin_37893887
玄尺 tomcat在设置connector使用Http11NioProtocol,就是http1.1。websocket是在1.1基础上扩展(upgrade),必须要指定1.1
大约一年之前 回复
qq_24913711
qq_24913711 嗯,我当初配置了websocket那些标签了,昨天突然查到的,是因为我没写proxy_http_version 1.1;这句话,但还是不知道为什么tomcat就可以,可能tomcat有默认参数,wildfly没有吧~
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!