我是NGINX和WebSocket系统的新手,但根据我的项目要求,我需要检查一些复杂的事情来完成。
我正在尝试使用NGINX创建一个示例,NGINX使用相同的Url(负载均衡器URL)处理我的WebSocket(端口:1234)和HTTP请求(端口:80)。
我正在使用三台NGINX服务器,一台作为Load Balancer(10.0.0.163),另外两台作为我的应用服务器,我分别安装了我的真实API 10.0.0.152和10.0.0.154。现在,我已在我的应用程序服务器上配置了WebSocket。
按照上面的配置,我的所有请求都将通过10.0.0.163(负载均衡器),它的代理设置会将请求(HTTP / WebSocket)传递给我的应用服务器(10.0.0.152/154)。
注意:每个应用程序服务器都包含单独的Nginx,php,websocket
这是10.0.0.154服务器的默认(位置:/ etc / nginx / sites-available /)文件,它处理同一域上的WebSocket和HTTP请求。
server{
listen 80;
charset UTF-8;
root /var/www;
index index.html index.htm index.php
server_name localhost 10.0.0.154 ;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ @proxy; autoindex on;
}
location @proxy{
proxy_pass http://wb1;
}
location =/ {
proxy_pass http://wb;
proxy_http_version 1.1;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer $http_referer;
proxy_redirect off;
}
}
以下是负载均衡器10.0.0.163的默认文件(位置:/ etc / nginx / sites-available /)。
upstream wb{
server 10.0.0.154;
server 10.0.0.152;
}
server{
listen 80;
charset UTF-8;
root /var/www;
index index.html index.htm index.php
server_name 10.0.0.163 ;
location / {
try_files $uri $uri/ @proxy; autoindex on;
}
location @proxy{
proxy_pass http://wb;
}
location =/ {
proxy_pass http://wb;
proxy_http_version 1.1;
proxy_buffers 8 16k;
proxy_buffer_size 32k;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer $http_referer;
proxy_redirect off;
}
}
我发现,负载均衡器正在为HTTP请求正常工作,但它无法将我的WebSocket请求发送到我的应用服务器。
我不知道我在这里缺少什么..如果你们可以帮助我,那将是很棒的事情
答案 0 :(得分:1)
我看到你的配置看起来很合适。我认为你应该检查你的负载均衡器&您的应用程序服务器配置。这可能是不兼容的问题。