zoukankan      html  css  js  c++  java
  • Nginx--用户认证&&访问控制&&限速&&状态访问

    一 用户认证

     某些网页只希望给特定的用户访问,可以设置用户认证,使用户访问时需要进行身份认证,只有认证通过才可访问网页

    location / {
            root   html;
            index  index.html index.htm;
            auth_basic "haha";                    #服务器描述信息
            auth_basic_user_file  /usr/local/nginx/passwd.db;  #存放用户和密码的文件
    }
    #下载命令
    [root@localhost ~]# yum provides htpasswd [root@localhost ~]# yum -y install httpd-tools-2.4.6-95.el7.centos.x86_64

    #设置用户及密码 [root@localhost
    ~]# htpasswd -c /usr/local/nginx/passwd.db user1 New password: Re-type new password: Adding password for user user1

    二 访问控制

     作用同用户认证,对访问的客户端进行限制,可与用户认证一起使用

    location / {
            root   html;
            index  index.html index.htm;
            allow   192.168.10.0/24;    #允许192.168.10网段的访问,可写固定ip(做实验先拒绝198网段访问)
            deny    all;            #拒绝所有用户访问,优先级从上至下
    }
    nginx -s reload

    三 限速

     nginx限速可以通过 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块来实现限速的功能

     1 ngx_http_limit_conn_module 主要限制下载速度

      并发连接限制

    http
    {
        ...
        limit_conn_zone $binary_remote_addr zone=aming:10m;    #定义一个内存区块索引aming,大小为10m,它以$binary_remote_addr作为key
        ...
        server
        {
            ...
            limit_conn aming 10;                    #定义针对aming这个zone,并发连接为10个(单个IP的并发最多为10个)
            ...   
        }
    }

      速度限制

    location / {
        root        html;
        index       index.html index.htm;
        limit_rate_after 512k;                    #当文件下载到指定大小之后开始限速(以下两个参数对每个请求限制)
        limit_rate 150k;                          #限制下载速度为150k
    }

     2 ngx_http_limit_req_module 主要限制请求数

      limit_req_zone

    语法: limit_req_zone $variable zone=name:size rate=rate;
    默认值: none
    配置段: http
    
    设置一块共享内存限制域用来保存键值的状态参数。 特别是保存了当前超出请求的数量
    键的值就是指定的变量(空值不会被计算)
    如limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    说明:区域名称为one,大小为10m,平均处理的请求频率不能超过每秒一次,键值是客户端IP
    使用$binary_remote_addr变量, 可以将每条状态记录的大小减少到64个字节,这样1M的内存可以保存大约1万6千个64字节的记录
    如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503 (Service Temporarily Unavailable)错误
    速度可以设置为每秒处理请求数和每分钟处理请求数,其值必须是整数
    即如果需要指定每秒处理少于1个的请求,2秒处理一个请求,可以使用 “30r/m”

      limit_req

    语法: limit_req zone=name [burst=number] [nodelay];
    默认值: —
    配置段: http, server, location
    
    设置对应的共享内存限制域和允许被处理的最大请求数阈值
    如果请求的频率超过了限制域配置的值,请求处理会被延迟,所以所有的请求都是以定义的频率被处理的
    超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值
    这时,这个请求会被终止,并返回503 (Service Temporarily Unavailable) 错误
    
    这个阈值的默认值为0。如:
    limit_req_zone $binary_remote_addr zone=aming:10m rate=1r/s;
    server {
        location / {
            limit_req zone=aming burst=5;
        }
    }
    
    限制平均每秒不超过一个请求,同时允许超过频率限制的请求数不多于5个
    
    如果不希望超过的请求被延迟,可以用nodelay参数,如:
    
    limit_req zone=aming burst=5 nodelay;

     3 设置白名单

      如果是针对公司内部IP或者lo(127.0.0.1)不进行限速,需要用到geo模块

      例:把127.0.0.1和192.168.198.0/24网段设置为白名单

    http {
        geo $limited {
            default 1;
            127.0.0.1/32 0;
            192.168.100.0/24 0;
        }
    
        map $limited $limit {
            1 $binary_remote_addr;
            0 "";
        }
        
        limit_req_zone $limit zone=aming:10m rate=1r/s;
    
        server {
            location / {  
                limit_req zone=aming burst=5;
            }
        }
    }

    四 状态访问

     主要用于对服务器的监控,通过访问这个网页得知nginx的连接的相关信息,可设置只允许管理员访问

    location = /status {
            stub_status on;
            access_log off;
         allow 127.0.0.1;
         deny all;
    }
    Active connections: 2         #活动连接数
    server accepts handled requests   #总共连接数 成功创建n次握手(相等表示中间没有失败) 处理了n个请求
     13 13 20 
    Reading: 0 Writing: 1 Waiting: 1   #读取到客户端的Header信息数  返回给客户端的Header信息数
                          #Waiting:开启keep-alive的情况下,这个值等于active - (reading + writing),意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接

  • 相关阅读:
    JavaEE——SpringMVC(11)--拦截器
    JavaEE——SpringMVC(10)--文件上传 CommonsMultipartResovler
    codeforces 460A Vasya and Socks 解题报告
    hdu 1541 Stars 解题报告
    hdu 1166 敌兵布阵 解题报告
    poj 2771 Guardian of Decency 解题报告
    hdu 1514 Free Candies 解题报告
    poj 3020 Antenna Placement 解题报告
    BestCoder5 1001 Poor Hanamichi(hdu 4956) 解题报告
    poj 1325 Machine Schedule 解题报告
  • 原文地址:https://www.cnblogs.com/Xinenhui/p/14121575.html
Copyright © 2011-2022 走看看