1.索引模块,目录索引,索引页
ngx_http_autoindex_module 模块处理以斜杠字符(’/”)结尾的请求,并生成目录列表。 当 ngx_htp_index_module 模块找不到索引文件时,通常会将请求传递给 ngx_http_autoindex_module 模块.。
例如:
Syntax: autoindex on | off; ##可以on或者off
Default: autoindex off; ##默认off关闭
Context: http, server, location ##可以包含在哪些区块,作用域
配置:
说明:
可以用来搭建自己的软件仓库,放一下文件,在线视频等
模块找不到索引文件时,通常会将请求传递给 ngx_http_autoindex_module 模块
所以,若果想要索引,/www/就不要有index.html文件
直接在location区块添加autoindex on开启即可
配置:
location / {
root /www/;
index index.html
autoindex on; ##开启索引
charset utf-8,gbk; ##字符集,防止中文乱码
autoindex_localtime on; ##显示索引目录修改时间时间
autoindex_exact_size off; ##显示文件大小xxmb
}
创建索引目录:
mkdir -p /www/{a..z}
生效:
systemctl reload nginx ##该配置文件reload重载
systemctl restart nginx ##新增加配置用重启
注意:优先生效最里面区块的配置,例如:定义日志文件和配置等
注意:如果中文乱码,配置 charset utf-8,gbk; 配置在那个区块作用域就在那个区块
注意:配置后面有空格或者tab空格也会报错
优化:
charset utf-8,gbk; ##字符集,防止中文乱码
autoindex_localtime on; ##显示索引目录修改时间时间
autoindex_exact_size off; ##显示文件大小xxmb
2.配置下载限速模块
- limit_ rate_after 50m; ##50m不限速,然后进行限速
- limit_rate 1m; ##限制每秒1m的速度下载
3.用户登录认证模块
*用户名密码认证:访问提示字符串*
Syntax: auth_basic string | off;
Default: auth_basic off;
Context: http, server, location, limit_except
1.安装htpasswd命令:
yum -y install httpd-tools
2.创建密码文件:
htpasswd -b -c /etc/nginx/www_passwd.conf admin 123456 ##生成用户和密码文件
# -b免交互账号密码 admin 123456
# -c创建文件
3.配置文件:
auth_basic "欢迎来到我的仓库"; ##提示符
auth_basic_user_file www_passwd.conf; ##用户名和密码文件位置
4.状态监控
配置:
location /nginx_status {
stub_status;
}
##配置完后,重启服务,访问www.haoshuaicong.icu/nginx_status
Active connections: 2
server accepts handled requests
8 8 26
Reading: 0 Writing: 1 Waiting: 1
- “Active connections: 2”:当前有 2 个tcp活动连接。
- “server accepts handled requests 8 8 26”:服务器接收8次、已响应处理的连接请求 8 次,客户端总请求26 次。
- “Reading: 0 Writing: 1 Waiting: 1”:等待0个读头,1 个连接在写数据,1 个连接处于等待状态。
5.nginx基于ip的访问控制
配置:
location /nginx_status {
stub_status;
allow 10.0.0.203;
deny all;
}
允许10.0.0.203连接,拒绝所有其他ip访问
allow 10.0.0.0/24;
deny all;
允许10.0.0.0网段的主机连接,拒绝所有其他ip访问
6.连接请求限制
1.连接数限制
- 必须配置到http区块才可使用
http区块配置:
# 模块名称 访问者ip地址 给这个ip开一个空间,限流10m
limit_conn_zone $remote_addr zone=conn_zone:10m;
# 水桶空间,10M能放100万个ip地址
server区块配置:
limit_conn conn_zone 1;
# 限制空间里的所有IP,同一时间每秒只有1个TCP连接
# 调用上面的limit_conn_zone配置
测试:
ab -n 20000000 -c 200 http://8.146.207.26/
# ab可以压力测试,请求20000次连接200次
2.请求数的限制
- 一个tcp的请求数限制
- 必须配置到http区块才可使用
http区块配置:
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=50r/s;
# 每秒最多50个请求
# 调用上面的limit_conn_zone配置
server区块配置:
limit_req zone=req_zone burst=20 nodelay;
# 延时处理10个请求,剩下的全部拒绝503
### 具体限制几个请求,看当前网页页面有多少请求,乘以2
limit_req_status 478;
# 把返回状态码改成478,因为500之后都是数据库的问题
limit_req_status 478 /err.html; #返回/err.html这个内容,不是绝对路径
7.location匹配规则
- 使用 Nginx Location 可以控制访问网站的路径,但一个server 可以有多个location 配置,多个 location 的优先级该如何区
分
匹配符 | 匹配规则 | 优先级 |
---|---|---|
= | 精确匹配 | 1 |
^~ | 以某个字符串开头 | 2 |
~ | 区分大小写的正则匹配 | 3 |
~* | 不区分大小写的正则匹配 | 4 |
/ | 通用匹配,任何请求都会匹配到 | 5 |
- 如果用户访问www.oldboy.com/img/123.jpg,5个location区块匹配规则都成立,则返回输出匹配优先级最高的location