ngx_http_auth_basic_module
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格式)
[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
# 官方网址 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: 失败次数
# 官方网址 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.限制数 调用连接池时会有限制数
http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... location /download/ { limit_conn addr 1; }
http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... server { ... location /search/ { limit_req zone=one burst=5; }