nginx中文文档-ngx_http_limit_conn_module

ngx_http_limit_conn_module模块用于限制一个定义关键字的连接数,尤其是单个客户端IP地址的连接数。并非所有连接都记录了。只有当连接有一个请求被服务器处理并且全部请求头已经读取时才会计数。

示例配置

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        location /download/ {
            limit_conn addr 1;
        }

limit_conn

语法:limit_conn zone number
默认:—
上下文:http, server, location

设置共享内存区域和给定的键值允许的最大连接数。当超过连接数限制时,服务器返回503错误码。例如,指令

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    location /download/ {
        limit_conn addr 1;
    }

允许同一时间每个IP只有一个连接。
HTTP2和SPDY协议中,每个并发的请求都被视作单独的连接。
可以有多个limit_conn指令。例如,下面的配置将会限制每个客户端IP连接数以及虚拟主机的总连接数:

limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    limit_conn perip 10;
    limit_conn perserver 100;
}

当且仅当当前层级中没有limit_conn指令时,这些指令会从上级继承。

limit_conn_log_level

语法:limit_conn_log_level info | notice | warn | error
默认:limit_conn_log_level error
上下文:http, server, location
版本:0.8.18+

设置当服务器限制请求数时记录日志的等级。

limit_conn_status

语法:limit_conn_status code
默认:limit_conn_status 503
上下文:http, server, location
版本:1.3.15+

设置拒绝请求的返回错误码。

limit_conn_zone

语法:limit_conn_zone key zone=name:size
默认:—
上下文:http

设置为不同关键字保存状态的共享内存区域参数。状态包含当前的连接数。key可以包含变量、文本以及混合值。空键值的请求不记录。
在1.7.6之前,key只能包含一个变量。
用例:
limit_conn_zone $binary_remote_addr zone=addr:10m
这里,一个客户端IP地址作为一个关键字。注意,这里使用$binary_remote_addr变量替代了$remote_addr变量。$remote_addr变量的值占用7~15字节。存储状态占用32或64字节在32位系统上,占用64字节在64位系统上。$binary_remote_addr变量总是4个字节,存储状态在32位系统上占用32字节,64位系统上占用64字节。1M的区域可以保存大于32,000的32字节状态或大约16,000的64字节状态。如果存储空间耗尽,服务器会对所有请求返回503错误码。

limit_zone

语法:limit_zone name $variable size
默认:—
上下文:http

该指令在1.1.8版本标记为过时,在1.7.6版本移除。使用limit_conn_zone指令替代:
limit_conn_zone $variable zone=name:size;

nginx中文文档-ngx_http_index_module

ngx_http_index_module模块处理以斜杠“/”结尾的请求。这些请求也可以被ngx_http_autoindex_module和ngx_http_random_index_module模块处理。

示例配置

location / {
    index index.$geo.html index.html;
}

index

语法:index file
默认:index index.html
上下文:http, server, location

定义一个作为索引的文件。file可以包含变量。文件将按照指定的顺序检查。列表中最后一个元素可以是一个文件的绝对路径,例如:
index index.$geo.html index.0.html /index.html
需要注意的是,使用索引文件会产生内部重定向,请求会被一个不同的location处理。例如,下面的配置:

location = / {
    index index.html;
}

location / {
    ...
}

“/”请求将会实际会作为“/index.html”处理。