Nginx设置websocket代理服务

nginx.conf配置文件

worker_processes 1;
error_log logs/error.log;

events {
     worker_connections 1024;
}

http {
    log_format  main '$remote_addr - $remote_user [$time_local] "$request" "$http_host" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$request_time" "$ssl_protocol" "$ssl_cipher" "$http_x_forwarded_for" '
    '"$upstream_addr" "$upstream_status" "$upstream_response_length" "$upstream_response_time"';

    access_log  ./logs/gateway_access.log  main;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    server {
        listen 10090;
        location /ws-test {
            proxy_pass http://127.0.0.1:10091;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header Host $host;
        }
    }

    server {
        server_name 0.0.0.0;
        listen 10091;
        location /ws-test {
            default_type text/html;
	    return 200 '<html><body>Websocket test successfully!</body></html>';
        }
    }
}

curl命令测试

curl --include 
     --no-buffer 
     --header "Connection: Upgrade" 
     --header "Upgrade: websocket" 
     --header "Host: websocket-test.com:80" 
     --header "Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==" 
     --header "Sec-WebSocket-Version: 13" 
     http://127.0.0.1:10090/ws-test/

参考:
1.nginx支持ws反向代理
2.Websocket Proxy

原文地址:https://www.cnblogs.com/sincere-ye/p/14453808.html