V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
coolair
V2EX  ›  问与答

咨询一个 Nginx 的配置问题

  •  
  •   coolair · 2017-08-02 13:47:18 +08:00 · 1100 次点击
    这是一个创建于 2678 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 上面,导致连接数多了,就挂了,需要重启服务。 怎么解决这个问题?

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

    轮询(默认算法)——每个请求会依次分配给后端不同的应用程序服务器,不理会后端服务器的实际压力
    加权轮询——权重越大的服务器,被分配到的次数就会越多,通常用于后端服务器性能不一致的情况
    IP HASH ——当同 IP 进行重复访问时会被指定到上次访问到的服务器,可以解决动态网站 SESSION 共享问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:42 · PVG 02:42 · LAX 10:42 · JFK 13:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.