Nginx常用模块

目录索引模块

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;
        }
点赞

发表回复