一、环境介绍
Nginx版本1.14,服务端为两台windows server2016服务器,appserver1:192.168.1.27,appserver2:192.168.1.28。web服务端口80,API服务端口8080,WebSocket服务端口9090。两台Nginx服务器,NginxA:192.168.1.31,NginxB:192.168.1.32,虚拟IP地址为:192.168.1.26。
客户端通过http://192.168.1.26访问服务。
二、反向代理设置
服务 监听端口 upstream Location Proxy_pass
web 80 Web{
192.168.1.27:80
192.168.1.28:80
} ^~ /apk/ http://web/
webapi 80 Webapi{
192.168.1.27:8080
192.168.1.28:8080
} ^~ /apk/Service/ http://webapi//Service/
websocket 9090 Websocket{
192.168.1.27:9090
192.168.1.28:9090
} ^~ /apk-ws/ http://websocket/
以上配置分别配置在两个.conf文件下,web和webapi配置在apknginx.conf中,websocket配置在apk-wsnginx.conf中,访问正常,无报错。
现需要将websocket监听端口改成80,所有的服务均通过80端口访问。
三、问题处理过程步骤:
location /apk-ws/ {
proxy_pass http://websocket/;
proxy_pass_request_headers on;
proxy_set_header Host $http_host
proxy_http_version 1.1;
proxy_set_header Host $upstream_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
proxy_connect_timeout 120s;
client_max_body_size 10240m;
client_body_buffer_size 25600k;
proxy_connect_timeout 5;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 128k;
}
upstream websocket{
server 192.168.246.2:9090 weight=1;
server 192.168.246.100:9090 weight=1;
}
server {
listen 80;
server_name 192.168.246.20;
#charset koi8-r;
access_log /root/logs/nginx/apkwstest.log main;
error_log /root/logs/nginx/apkwstest_error.log;
location /apkws/ {
set $in_port 9090;
#root html;
#index index.html index.htm;
proxy_pass http://websocket/;
proxy_set_header Host $host:$in_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10240m;
client_body_buffer_size 25600k;
proxy_connect_timeout 5;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 128k;
}
应该还有其他的解决方案,本人愚钝,各位大佬如有其它解决方案请不吝赐教!!
原文:https://www.cnblogs.com/handsomezhy/p/14545125.html