Nginx目录索引
目录索引模块简述
ngx_http_autoindex_module模块处理以斜杠字符('/')结尾的请求,并生成目录列表。
当ngx_http_index_module模块找不到索引文件时,通常会将请求传递给ngx_http_autoindex_module模块。
配置
Nginx默认是不允许列出整个目录浏览下载。
Syntax: autoindex on | off;Default: autoindex off;Context: http, server, location # autoindex常用参数autoindex_exact_size off;默认为on, 显示出文件的确切大小,单位是bytes。修改为off,显示出文件的大概大小,单位是kB或者MB或者GB。 autoindex_localtime on;默认为off,显示的文件时间为GMT时间。修改为on, 显示的文件时间为文件的服务器时间。 charset utf-8,gbk;默认中文目录乱码,添加上解决乱码。
配置示例:
[root@web01 ~]# vim /etc/nginx/conf.d/module.confserver { listen 80; server_name module.driverzeng.com; charset utf-8,gbk; localtion / { root /code; index index.html index.htm; } location /download { alias /module; autoindex on; autoindex_exact_size off; autoindex_localtime on; }}
Nginx状态监控
ngx_http_stub_status_module模块提供对基本状态信息的访问。
默认情况下不构建此模块,应使用--with-http_stub_status_module配置参数启用它
配置
Syntax: stub_status;Default: —Context: server, location
配置Nginx status示例
server { listen 80; server_name module.driverzeng.com; access_log off; location /nginx_status { stub_status; }}server { listen 80; server_name module.driverzeng.com; charset utf-8,gbk; localtion / { root /code; index index.html index.htm; } location /download { alias /module; autoindex on; autoindex_exact_size off; autoindex_localtime on; } location /nginx_status { stub_status; }}
打开浏览器访问:http://module.driverzeng.com/nginx_status

Active connections # 当前活动的连接数accepts # 当前的总连接数TCPhandled # 成功的连接数TCPrequests # 总的http请求数Reading # 请求Writing # 响应Waiting # 等待的请求数,开启了keepalive# 注意, 一次TCP的连接,可以发起多次http的请求, 如下参数可配置进行验证keepalive_timeout 0; # 类似于关闭长连接keepalive_timeout 65; # 65s没有活动则断开连接
Nginx访问控制
基于IP的访问控制 http_access_module
基于用户登陆认证 http_auth_basic_module
nginx基于IP的访问控制
#允许配置语法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
1)访问控制配置示例,拒绝指定的IP,其他全部允许
server { listen 80; server_name module.driverzeng.com; access_log off; location /nginx_status { stub_status; deny 10.0.0.1; allow all; }}
2) 访问控制配置示例, 只允许谁能访问, 其它全部拒绝
server { listen 80; server_name module.driverzeng.com; access_log off; location /nginx_status { stub_status; allow 10.0.0.0/24; allow 127.0.0.1; deny all; }}
Nginx基于用户登陆认证
1)基于用户登陆认证配置语法
#访问提示字符串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
2)基于用户登陆认证配置实践
#1.需要安装httpd-tools,该包中携带了htpasswd命令[root@web01 ~]# yum install httpd-tools#2.创建新的密码文件, -c创建新文件 -b允许命令行输入密码[root@web01 ~]# htpasswd -b -c /etc/nginx/auth_conf zls zls #3.nginx配置调用server { listen 80; server_name module.driverzeng.com; access_log off; location /nginx_status { stub_status; auth_basic "Auth access Blog Input your Passwd!"; auth_basic_user_file auth_conf; }}
Nginx访问限制
在企业中经常会遇到这种情况,服务器流量异常,负载过大等等。对于大流量恶意的攻击访问, 会带来带宽的浪费,服务器压力,影响业务,往往考虑对同一个ip的连接数,请求数、进行限制。
ngx_http_limit_conn_module模块可以根据定义的key来限制每个键值的连接数,如同一个IP来源的连接数。
limit_conn_module 连接频率限制
limit_req_module 请求频率限制
Nginx连接限制配置实战
1)Nginx连接限制配置语法
#模块名ngx_http_limit_conn_moduleSyntax: limit_conn_zone key zone=name:size;Default: —Context: http Syntax: limit_conn zone number;Default: —Context: http, server, location
2)Nginx连接限制配置实践
在一个公网Nginx中配置
http{ #http层,设置 # Limit settings limit_conn_zone $remote_addr zone=conn_zone:10m;server{ #server层调用 #连接限制,限制同时最高1个连接 limit_conn conn_zone 1; }}
3)使用ab工具进行压力测试
[root@web01 ~]# yum install -y httpd-tools[root@web01 ~]# ab -n 20 -c 2 http://127.0.0.1/index.html
4)nginx日志结果
2018/10/24 18:04:49 [error] 28656#28656: *1148 limiting connections by zone "conn_zone