nginx代理WebSocket无法访问ws//WebSocket/xxxx

NGINX通过允许一个在客户端和后端服务器之间建立的隧道来支持WebSocket。为了NGINX发送来至于客户端Upgrade请求到后端服务器,Upgrade和Connection头部必须被设置明确。 

示例,这里我们使用nginx来做代理。

nginx的主配置文件有“ include /opt/nginx/vhost/*.conf;”在另外一个虚拟主机配置代理项目加上如下两个参数:

proxy_set_header Upgrade $http_upgrade;             
proxy_set_header Connection "upgrade";


支持WebSocket

vi /opt/nginx/vhost/test8182.conf
#临时开放8182端口
    server {
        listen       8182;
        server_name  localhost;
        large_client_header_buffers 4 128k;
        client_max_body_size 300m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_buffer_size 64k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
#测试环境
        location /ws  {
           index  index.html index.htm index.jsp;
           proxy_pass  http://192.168.1.18:8082/ws;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header Host $host:$server_port;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection "upgrade";
        }
    }


猜你喜欢

转载自blog.51cto.com/meiling/2299073
今日推荐