nginx自从1.1.8版本发布后将limit_conn更换为limit_conn_zone 。对应则需要修改配置文件


旧版本nginx访问限制配置方法(v1.1.8以下)

limit_conn_zone addr $binary_remote_addr 10m; #容器共使用10M的内存来对于IP传输开销


#################################

  server {

       listen       80;

       server_name  www.abc.com;

       limit_conn addr 10;



新版本nginx使用旧的配置方式,检测配置文件报错如下:


[root@master cacti]# nginx -t

nginx: [emerg] unknown directive "limit_conn_zone" in /usr/local/nginx/conf/nginx.conf:60

nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

[root@master cacti]# vi /usr/local/nginx/conf/nginx.conf



新版本nginx访问限制配置方法(高于v1.1.8)


对应conf文件夹中的nginx.conf文件,将limit_zone替换为limit_conn_zone。


指令

limit_zone

语法:limit_conn_zone $variable zone=name:size;

默认值:no

使用字段:http

指令描述会话状态存储区域。

会话的数目按照指定的变量来决定,它依赖于使用的变量大小和memory_max_size的值。


如下例:

limit_conn_zone $binary_remote_addr zone=addr:10m;


###################################

  server {

       listen       80;

       server_name  www.abc.com;

       limit_conn addr 10;  # 每个IP使用10个连接。

limit_conn

语法:limit_conn zone_name max_clients_per_ip

默认值:no

使用字段:http, server, location

指令指定一个会话的最大同时连接数,超过这个数字的请求将被返回”Service unavailable” (503)代码。

如下例:

limit_conn_zone $binary_remote_addr zone=addr:10m;


server {

 location /download/ {

 limit_conn   one  1;

}这将指定一个地址只能同时存在一个连接。