Nginx:limit_conn与上游max_conns(在位置上下文中)

时间:2018-09-05 14:38:47

标签: nginx nginx-location

环境:Nginx 1.14.0(有关更多详细信息,请参见dockerfile)。

限制特定位置的并发连接数
在服务器中,可以使用两种方法-limit_conn (third example for all ips)
upstream max_conns
两种方法的工作方式是否有所不同?
有人可以解释或参考解释吗?

使用上游max_conns进行限制的示例:

http {
   upstream foo{
     zone upstream_foo 32m;
     server some-ip:8080 max_conns=100;
   }

   server {
    listen 80;
    server_name localhost;

    location /some_path {
       proxy_pass http://foo/some_path;
       return 429;
    }
   }  
}

使用limit_conn进行限制:

http {

   limit_conn_zone $server_name zone=perserver:32m;

   server {
    listen 80;
    server_name localhost;

    location /some_path {
       proxy_pass http://some-ip:8080/some_path;
       limit_conn perserver 100;
       limit_conn_status 429;
    }
   }  
}

1 个答案:

答案 0 :(得分:0)

upstream max_conns是从nginx服务器到上游代理服务器的连接数。 max_conns可以确保后端服务器不会过载。假设您有nginx可以发送到5台服务器的上游。也许其中一个的功率不足,所以您可以限制与它的连接总数,以防止过载。

limit_conn是客户端到nginx服务器的连接数,目的是限制请求到nginx服务器的滥用。例如,您可以说一个位置,一个IP在最大化之前只能有10个打开的连接。