欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx基础模块配置

程序员文章站 2022-06-11 14:42:47
...
原文链接: https://www.cpweb.top/552

1、目录索引模块:ngx_http_autoindex_module

开启目录索引

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

off以可读的格式显示大小信息

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

显示文件最后修改的时间,默认是上传的时间。

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

2、访问限制模块: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

示例:依次按顺序检索,如果需要制定的规则较多,推荐使用ngx_http_geo模块。

location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

3、基本认证模块: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 conf/htpasswd;
}

密码格式如下,需要通过htpasswd命令生成。

[[email protected] ~]# htpasswd -c /etc/nginx/auth_basic test    //-c生成新的密码文件
New password: 
Re-type new password: 
Adding password for user test

[[email protected] ~]# cat /etc/nginx/auth_basic 
test:$apr1$VP/ZpG3y$mNFIQ2Pib3WhI7diMs3ak0

[[email protected] ~]# htpasswd /etc/nginx/auth_basic test2    //添加认证用户,不用加-c,加了-c会覆盖原来的用户
New password: 
Re-type new password: 
Adding password for user test2

[[email protected] ~]# cat /etc/nginx/auth_basic 
test:$apr1$VP/ZpG3y$mNFIQ2Pib3WhI7diMs3ak0
test2:$apr1$TNo4tq2S$djvomoR4uLzo2xGXsdVDn0

4、状态模块:ngx_http_stub_status_module

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

示例:

location = /status {
    stub_status;
}

输出信息含义:

Active connections: 1 
server accepts handled requests
          1       1       7 
Reading: 0 Writing: 1 Waiting: 0 

------------------------------------

Active connections	当前活跃连接数,包括Waiting等待连接数。
accepts			    已接收的总TCP连接数量。
handled			    已处理的TCP连接数量。
requests			当前总http请求数量。
Reading			    当前正在读取的请求头的连接数量。
Writing			    当前正在响应的请求头的连接数量。
Waiting			    当前等待请求的空闲客户端连接数

5、连接限制模块:ngx_http_limit_conn_module

  设置共享内存区域,区域将保留各种值的状态。key可以包含文本,变量及其组合。格式是针对限制的对象、内存空间的名字、内存空间大小。binaryremoteaddrIPbinary_remote_addr是限制同一客户端的IP地址并发连接数;server_name是限制同一server最大并发数。

Syntax:	limit_conn_zone key zone=name:size;
Default:	—
Context: http

设置共享内存区域和最大允许连接数。当超过此限制时,服务器将返回503状态码。

Syntax:	limit_conn zone number;
Default:	—
Context: http, server, location

示例:使用limit_conn指令使用前,需要在http层定义limit_conn_zone。

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
					//定义了一个10m内存空间,名称叫addr,针对的是来源的IP。

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

6、请求限制模块:ngx_http_limit_req_module

解释同上limit_conn_zone,不过它限制的是来自单个IP地址的请求的处理速率。

Syntax:	limit_req_zone key zone=name:size rate=rate;
Default:	—
Context: http

  设置共享内存区域和请求的最大并发数。如果请求速率超过为区域配置的速率,则会延迟其处理,以便以定义的速率处理请求。过多的请求将被延迟,直到其数量超过最大突发大小为止,在这种情况下,该请求将会终止返回503状态码。默认情况下,最大并发数等于零。

Syntax:	limit_req zone=name [burst=number] [nodelay | delay=number];
Default:	—
Context: http, server, location

示例:

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
                   //定义了一个10m内存空间,名称叫one,平均每秒最多允许不超过1个请求,针对来源ip。    
    ...
    
    server {
    
        ...
        
        location /search/ {
            limit_req zone=one burst=5;
        }
    }
}

  如果不需要在限制请求时延迟过多的请求,则应使用参数nodelay,则延迟的请求将会被丢弃。即如果你的网页完全显示出来需要6个请求,不配nodelay,那就是一秒处理一个,处理到第五个请求停止,总共用时5秒钟,丢失一个请求。如果配置了参数nodelay,则只处理第一个请求,其余请求全部丢弃。

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

server {
    location /search/ {
        limit_req zone=one burst=5 nodelay;     //平均每秒最多处理1个请求,并且并发发不超过5个请求,对于请求不延迟处理直接丢弃。
    }
}


原文链接: https://www.cpweb.top/552