web sockets的nginx负载平衡配置

nzk0hqpo  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(136)

我正在配置Nginx将传入的Web Socket请求重定向到两个不同的服务器,但每次我都得到404。
我在/etc/nginx/conf.d/文件夹中的loadbalancer.conf文件中的Nginx配置如下所示:

upstream websocket {
    server localhost:5050; //web socket server1 running here
    server localhost:8080; //web socket server2 running here
}
server {
    listen      4141;
    server_name localhost:4141;

    location / {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Host $host;
        proxy_set_header Connection "upgrade";
    }
}

字符串
当我直接访问Web Socket服务器时(URL:ws://localhost:8080/app/socket/user 1),则请求工作正常,但当我通过Nginx(URL:ws://localhost:4141/app/socket/user 1),则请求不会传递到任何Web Socket服务器。
更新:
1.我已经尝试将proxy_pass设置直接更改为server 1(localhost:5050),但请求也无法通过。

  1. Nginx访问日志显示以下错误:
    • 1 - - [2023年1月9日:10:57:07 + 0530]“GET /应用程序/套接字/用户1 HTTP/1.1”404 197“-”“Mozilla/5.0(X11; Linux x86_64)苹果网络工具包/537.36(KHTML,像壁虎一样)Chrome浏览器/89.0.4389.90 Safari浏览器/537.36”

有人能回答吗
1.配置出了什么问题?

  1. Nginx是否提供更详细的日志,我可以在哪里查看?
brjng4g3

brjng4g31#

可以使用ip_hash配置nginx up_stream blo

upstream websocket {
ip_hash;
server localhost:5050; //web socket server1 running here
server localhost:8080; //web socket server2 running here
}
server {
listen      4141;
server_name localhost:4141;

location / {
    proxy_pass http://websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Host $host;
    proxy_set_header Connection "upgrade";
}

字符串

相关问题