nginx二:常用功能(一):目录索引、监控状态、访问控制、访问限制
1.索引目录
类似于ftp服务器,共享文件目录的作用。如图:

server { listen 80; server_name www.myweb.com; location /download { root /worldcupmf; # 网站的根目录 autoindex on; # 开启索引目录功能 charset utf-8; # 设置编码 autoindex_localtime on; # 设置时间 autoindex_exact_size off; # 关闭bytes显示大小,启用kb,Mb来显示文件或文件夹大小 } }
重载配置:nginx -s reload或者systemctl reload nginx
修改hosts文件:192.168.1.15 www.myweb.com
排错,查看日志:/var/log/nginx/error.log
2.状态监控
nginx_http_stub_status_module:用于展示nginx连接状态信息,需要 --with-http_stub_status_module模块支持。
a.查看是否安装此模块:
nginx -V &> 1.txt --with-http_stub_status_module
b.查看文档:http://nginx.org/en/docs/,搜索status模块
配置:
location /nginx_status {
stub_status;
access_log off; #off,将会关闭访问记录
}
结果:
Active connections: 2 # 当前活动的连接数 server accepts handled requests 7 7 15 #accepts:当前的总连接数TCP ,handled:成功的连接数TCP,requests:总的http请求数 Reading: 0 Writing: 1 Waiting: 1
测试,观察长连接和短连接的区别:
将keepalive_timeout 设置为0,刷新状态页面,结果:当使用短连接的时侯,每刷新一次accepts和handled都会刷新。
将keepalive_timeout 设置为65,刷新状态页面,结果:当使用长连接的时侯,每刷新一次,accepts和handled要等65秒,TCP连接超时后,才会重新连接
3.访问控制
基于IP的访问控制:http_access_modul,比如后台控制或vpn
基于用户登陆认证的访问控制:http_auth_basic_module,比如前台控制
查看文档:http://nginx.org/en/docs/,搜索access模块
示例1:基于IP的访问控制
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; }
从上往下,依次匹配,满足条件就停止----因此越具体的写到越上面。匹配方式同apache的语法不同。
如果拒绝的多-----先写允许,最后默认拒绝所有
如果允许的多----先写拒绝,最后默认允许所有
语法:deny或allow后面,可以跟address,CIDR,unix正则,all
位置:通常写在location中
示例2:基于用户认证的访问控制
配置语法:auth_basic string | off,默认值是off
配置位置:通常用于location或server配置
用户名和密码记录的配置文件:
语法:auth_basic_user_file file
位置:通常用于location或server配置
依赖组件:yum install httpd-tools
httpd-tools工具,用于验证和生成密码的工具
htpasswd -b -c /etc/nginx/.auth_conf myuser mypassword
以上中的.auth_conf,是自定义的,用于存储用户名和密码的文件。
在nginx配置示例:
server { listen 80; server_name www.myweb.com; location / { root /worldcupmf; index index.html; auth_basic "please input your password!"; auth_basic_user_file /etc/nginx/.auth.conf } }
4.访问限制

HTTP请求建立在TCP连接的基础之上, 一次TCP连接至少产生一次HTTP请求
a.连接限制语法:
- limit_conn_zone key zone=name:size;
- 位置:http
- limit_conn zone=name number
- 位置:http,server,location
连接限制示例:
http { # 在http段配置连接限制zone的定义,示例:针对key(客户端连接:$binary_remote_addr)进行限制,存储空间最大10M limit_conn_zone $binary_remote_addr zone=my_conn_zone:10m; server { # 同一时刻,只允许一个客户端IP连接 limit_conn zone=my_conn_zone 1;
主机变量:$binary_remote_addr长度固定为4个字节(一个IP地址=32bit=4bytes),$remote_addr长度为7~15个字节
10M=10*1024k=10*1024*1024Bytes
使用ab进行压力测试:yum install ab
ab -n 50 -c 20 http://127.0.0.1/index.html
b.请求限制语法:
- limit_req_zone key zone=name:size rate=rate;
- 位置:http
- limit_req zone=name burst=5
- 位置:http,server,location
请求限制示例:
http { # 在http段配置连接限制zone的定义,示例:针对key(客户端连接:$binary_remote_addr)进行限制,每秒钟1次最多一个IP请求 limit_req_zone $binary_remote_addr zone=my_req_zone:10m rate=1r/s; server { #1秒钟只接收一个请求,其余请求拒绝处理,并返回错误码给客户端 limit_conn zone=my_req_zone; #1秒钟只收到一个请求,剩下的将被延迟处理,请求数超过burst定义的数量,多余的请求nodelay返回503 #limit_req zone=my_req_zone burst=3 nodelay;
压测:ab -n 50 -c 20 http://192.168.1.10/download
posted on 2014-08-25 11:18 myworldworld 阅读(203) 评论(0) 收藏 举报
浙公网安备 33010602011771号