nginx反向代理websocket wss或ws端口
1.直接上nginx配置文件
注意:
后端端口使用wss:proxy_pass https://wss_8; 后端端口使用ws :proxy_pass http://wss_8;
upstream wss_8{ server 127.0.0.1:8004; } ### server { listen 8104 ssl; server_name bbxx.ios.xxx.com; #ssl on; ssl_certificate ssl/xxx.com.crt; ssl_certificate_key ssl/xxx.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; access_log /var/log/nginx/wss_8_forward_port_8104.access.log; error_log /var/log/nginx/wss_8_forward_port_8104.error.log; location / { add_header Access-Control-Allow-Origin *; proxy_redirect off; proxy_pass https://wss_8; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr:$remote_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } error_page 500 502 503 504 /50x.html; }
更简洁写法
upstream wss_8 { server 127.0.0.1:8004; } upstream wss_9 { server 127.0.0.1:8005; } server { listen 8104 ssl; server_name bbxx.ios.xxx.com; ssl_certificate ssl/xxx.com.crt; ssl_certificate_key ssl/xxx.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; access_log /var/log/nginx/wss.access.log; error_log /var/log/nginx/wss.error.log; location / { add_header Access-Control-Allow-Origin *; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr:$remote_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; # 直接在proxy_pass中拼接路径来选择不同的上游服务器 proxy_pass https://wss_$arg_id; } error_page 500 502 503 504 /50x.html; } 在这个配置中,我们使用了 $arg_id 变量,它代表 URL 中的查询参数 id 的值。例如,如果客户端请求 wss://bbxx.ios.xxx.com:8104/?id=8,那么 $arg_id 的值将会是 8,Nginx 将会将请求代理到 wss_8 上游服务器。 请注意以下几点: 客户端需要在 URL 中包含 id 查询参数,例如 wss://bbxx.ios.xxx.com:8104/?id=8。 由于我们使用了 https://,这意味着 Nginx 将处理 SSL/TLS 握手。如果您的上游服务器不需要 SSL,您可以将 https:// 改为 http://。 确保您的 Nginx 版本支持在 proxy_pass 中使用变量。 这种方法是最简洁的,因为它只需要一个 location 块和一个 proxy_pass 指令,并且直接在 proxy_pass 中使用变量来选择不同的上游服务器。
2.在线websocket接口测试工具:https://www.qvdv.com/tools/qvdv-websocket.html
一些事情一直在干,说不定以后就结果了呢
本文来自博客园,作者:chenjianwen,转载请注明原文链接:https://www.cnblogs.com/chenjw-note/p/14392145.html