目录索引模块

ngx_http_autoindex_module 模块处理以斜杠字符(’/‘)结尾的请求,并生成目录列表。 当ngx_http_index_module 模块找不到索引文件时,通常会将请求传递给 ngx_http_autoindex_module 模块。

语法

Syntax:	autoindex on | off;
Default:
autoindex off;
Context: http, server, location

常用参数

#默认中文是乱码,添加该参数可以解决乱码问题
charset utf-8;

#开启目录索引孤男功能
autoindex on;

#默认为on, 显示出文件的确切大小,单位是bytes
#修改为off,显示出文件的大概大小,单位是kB或者MB或者GB。
autoindex_exact_size off;

autoindex_localtime on;
#默认为off,显示的文件时间为UTC时间。
#修改为on, 显示的文件时间为文件的最后修改时间。

配置示例

location /download {
root /data;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}

 

访问控制模块

ngx_http_access_module ,该模块允许限制对某些客户端地址的访问。

模块语法

#允许访问语法
Syntax: allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except

#拒绝访问语法
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except

访问控制实例

  • 允许10.0.0.1访问,其他网址不允许

    location /status {
    allow 10.0.0.1;
    deny all;
    }
  • 拒绝10.0.0.1访问,其他网址都允许

    location /status {
    deny 10.0.0.1;
    allow all;
    }
  • 允许10.0.0.0网段访问,其他网段不允许

    location /status {
    allow 10.0.0.0/24;
    deny all;
    }

 

访问认证模块

ngx_http_auth_basic_module ,该模块允许通过使用”HTTP 基本身份验证”协议验证用户名和密码来限制对资源的访问。

语法

#注释
Syntax: auth_basic string | off;
Default: auth_basic off;
Context: http, server, location, limit_except

#指定认证的文件
Syntax: auth_basic_user_file file;
Default: —
Context: http, server, location, limit_except

配置示例

location / {
auth_basic "closed site";
auth_basic_user_file /etc/nginx/conf.d/htpasswd;
}

创建密码文件

#htpasswd命令需要提前安装httpd-tools软件
htpasswd -m -c /etc/nginx/conf.d/htpasswd user1

注意

给多个用户生成密码时,不能使用-c参数。

 

Nginx状态模块

ngx_http_stub_status_module 该模块提供对各种状态信息的访问。

语法

Syntax:	stub_status;
Default: —
Context: server, location

配置示例

location /status {
stub_status;
}

Nginx七种状态

Active connections: 2 
server accepts handled requests
4 4 56
Reading: 0 Writing: 1 Waiting: 1



Active connections: # 活跃的连接数
accepts # TCP连接总数
handle # 成功的TCP连接数
requests # 请求数

Reading # 读取请求头部
Writing # 放回给客户端的头部
Waiting # 等待的请求数

#注意:一次tcp连接,可以发起多次请求;
keepalive_timeout 0; #类似于关闭长连接
keepalive_timeout 0; #最长65秒没有活动则断开连接

 

连接限制模块

ngx_http_limit_conn_module ,该模块用于限制每个定义的键的连接数,特别是来自单个IP地址的连接数。ngx_http_limit_conn_module 并非所有连接都计算在内。只有当连接有服务器正在处理的请求并且已读取整个请求标头时,才计算连接。

语法

#设置限制的空间
#调用模块 空间里的内容 空间=空间名字:空间大小
Syntax: limit_conn_zone key zone=name:size;
Default: —
Context: http

#调用上面的空间
Syntax: limit_conn zone number;
Default: —
Context: http, server, location

配置示例

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

...

server {

...

location /download/ {
limit_conn addr 1;
}

 

请求限制模块

ngx_http_limit_req_module ,该模块 (0.7.21) 用于限制每个定义的键的请求处理速率,特别是来自单个 IP 地址的请求的处理速率。限制使用”泄漏桶”方法完成。

语法

#设置限制请求的空间
#模块 空间里保存的内容 空间=空间名称:大小 速率 1r/s
Syntax: limit_req_zone key zone=name:size rate=rate [sync];
Default: —
Context: http

#调用上面空间
Syntax: limit_req zone=name [burst=number] [nodelay | delay=number];
Default: —
Context: http, server, location

#设置要返回的状态代码以响应被拒绝的请求
Syntax: limit_req_status code;
Default:
limit_req_status 503;
Context: http, , serverlocation

配置示例

http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

...

server {

...

location /search/ {
limit_req zone=one burst=5;
limit_req_status 503;
}