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

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

如果希望使用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;
    }
}