nginx模块(访问,目录索引,状态监控,访问连接控制)

目录

  • 访问输入用户名密码模块

    • ngx_http_auth_basic_module

    • 登录IP地址需要输入用户名以及密码

1、安装httpd-tools
[root@web01 ~]# yum install httpd-tools -y

2、生成用户名密码文件
[root@web01 ~]# htpasswd -c /etc/nginx/auth junjie
New password:             
Re-type new password:     
Adding password for user junjie

3、将文件路径加入Nginx配置
[root@web01 ~]# vim /etc/nginx/conf.d/game4.conf
    auth_basic "Welcome To Login";
    auth_basic_user_file /etc/nginx/auth;
"""
    server {
    listen 79;
    server_name 192.168.1.7;
    
    auth_basic "Welcome To Login";
    auth_basic_user_file /etc/nginx/auth;

    location / {
    root /opt/mairegame;
    index index.html;
    }
}

server {
    listen 81;
    server_name www.game1.com;
   
    location / {
    root /opt/xiangqigame;
    index index.html;
    }
}
"""

4、重启Nginx
[root@web01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01 ~]# systemctl restart nginx 
server {
    server_name 192.168.15.7;
    listen 80;
    autoindex on;
    autoindex_exact_size on;
    location / {
    root  /usr/share/nginx/;
    index index.html;
    }
}
# 默认均为关闭,手动添加
autoindex on;(目录索引)

autoindex_exact_size on;(展示文件大小)

# 产生一个5M大小的文件
[root@web01 nginx]# dd if=/dev/zero of=5M.txt bs=1M count=5

autoindex_localtime on;(将时间改为本地时间,默认东八区时间)

# 默认格式html , autoindex_format html | xml | json | jsonp
autoindex_format json;(将当前页面展示格式改为json格式)
  • Nginx状态监控模块

[root@web01 conf.d]# cat maire.conf 
server {
    server_name 192.168.15.7;
    listen 80; 

    location / {
        stub_status;
    }
} 
# server 中添加一个独立的location 即可

# Active connections:当前活动客户端连接数,包括waiting连接数
Active connections: 2

# accepts(接收的客户端连接总数) --> 2
# handled(处理的连接总数) --> 2
# requests(客户端请求的总数)-- 5
server accepts handled requests
 2 2 5 

nginx模块(访问,目录索引,状态监控,访问连接控制)

访问连接控制模块

  • ngx_http_limit_conn_module
  • ngx_http_limit_req_module
  • 两个模块控制速率模块

ngx_http_limit_conn_module(控制连接数)

# 官方网址
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

控制nginx连接
第一次访问网站一个长链接即可完成访问,不停访问连接数不断增加,此时就可以充值连接数
# 官方模块
limit_conn_zone $binary_remote_addr zone=addr:10m
$binary_remote_addr:  把什么选项放进连接池(客户端IP --> $remote_addr)

调用:
limit_conn addr 1;(1代表只能有一个链接)

案例:
[root@web01 conf.d]# pwd
/etc/nginx/conf.d
[root@web01 conf.d]# ls
maire.conf

limit_conn_zone $remote_addr zone=addr:10m;
server {
    server_name 192.168.15.7;
    listen 80; 

    autoindex on; 
    limit_conn addr 1;

    location /status {
        stub_status;
    }

    location / {
    root  /opt/mairegame;
    index index.html;
    }
}
手动刷新192.168.15.7的速度不够块,无法提现,此处用到ab工具(压测)
1. 安装ab测试命令
yum install httpd-tools -y

2.ab 参数
		-n : 总共需要访问指定网站多少次
		-c : 每次访问多少个(同时产生指定次数链接)

试试就试试:
[root@web01 mairegame]# ab -n 100000 -c 200 http://192.168.15.7/
...
Complete requests: 执行总次数
Failed requests: 失败次数

ngx_http_limit_req_module(用于限制每个定义的键的请求速率,限制访问量)

# 官方网址
http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
# 官方模板
'limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;'

req模块有两个部分:
1.连接池
连接池控制访问数量,需要有一个控制开关
limit_req_zone: 声明一个连接池 
$binary_remote_addr: 把什么选项放进连接池(客户端IP --> $remote_addr)
zone=one : 连接池名称 
10m : 连接池大小(10兆 )
rate=1r/s:速率(每秒访问一次)
limit_req_zone $remote_addr zone=one:10m rate=1r/s;
		声明连接池       变量          名称  连接池的大小  速率

limit_req_zone 的优先级 全局 > http > server > location
 
调用:
limit_req zone=one burst=5;
burst=5(限定次数不可超过五次)

案例:
[root@web01 conf.d]# cat maire.conf 
limit_req_zone $remote_addr zone=one:10m rate=1r/s;
server {
    server_name 192.168.15.7;
    listen 80; 

    autoindex on; 

    location /status {
        stub_status;
    }

    limit_req zone=one burst=5;

    location / {
    root  /opt/mairegame;
    index index.html;
    }
}
快速刷新由于限制访问将会报503错误,被控制了访问量,不允许访问过多次数

[root@web01 mairegame]# ab -n 100000 -c 200 http://192.168.15.7/
...
Complete requests: 执行总次数
Failed requests: 失败次数
Complete requests:      100000
Failed requests:        99985

2.限制数
调用连接池时会有限制数

nginx模块(访问,目录索引,状态监控,访问连接控制)

ngx_http_limit_conn_module(官方模块)

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

    ...

    server {

        ...

        location /download/ {
            limit_conn addr 1;
        }

ngx_http_limit_req_module (官方模块)

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

    ...

    server {

        ...

        location /search/ {
            limit_req zone=one burst=5;
        }
上一篇:centos7下常用软件安装最新版本 redis mysql 等 长期更新


下一篇:NGINX速率限制原理及源码分析