咨询一个 Nginx 的配置问题

2017-08-02 13:47:18 +08:00
 coolair
upstream test_server {
    ip_hash;
    server unix:/tmp/test_0.sock max_fails=3 fail_timeout=10s;
    server unix:/tmp/test_1.sock max_fails=3 fail_timeout=10s;
    server unix:/tmp/test_2.sock max_fails=3 fail_timeout=10s;
}

server {
    listen 80;
    server_name 192.168.1.100;
    client_max_body_size 4G;

    location / {
        proxy_redirect off;
        proxy_connect_timeout 75s;
        proxy_read_timeout 300s;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://test_server;
    }
}

所有访问请求值落在了一个 sock 上面,导致连接数多了,就挂了,需要重启服务。 怎么解决这个问题?

1046 次点击
所在节点    问与答
2 条回复
vus520
2017-08-02 14:35:23 +08:00
业务都是本机,有必要用 ip_hash 吗?
coolyujiyu
2017-08-02 18:30:35 +08:00
如果你能解决 session 的问题,那就不用 ip_hash 了
按你的情况,你应该选择轮询

轮询(默认算法)——每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力
加权轮询——权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况
IP HASH ——当同 IP 进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站 SESSION 共享问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/379787

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX