我对NGINX和WebSocket系统还很陌生,但根据我的项目需求,我需要检查一些复杂的事情才能完成。
我正在尝试创建一个使用NGINX的例子,它可以使用同一URL(负载均衡器URL)处理我的WebSocket(端口:1234)和HTTP请求(端口:80)。
我使用了三个NGINX服务器,其中一个作为负载均衡器(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;
}
}
以下是负载均衡器默认文件(位置:/etc/nginx/sites-available/)针对 10.0.0.163。
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请求转发到应用服务器。我不知道我漏了什么..如果你们能帮我解决这个问题,我会非常感激。