nginx访问控制详解
基于来源IP访问控制
ngx_http_access_module模块允许限制对某些客户端地址的访问
1:允许10.0.0.7和10段访问,其他全部拒绝。
allow 10.0.0.7; #允许单个IP地址
allow 10.0.0.0/24; #允许地址或地址段
deny all; #拒绝所有
2:拒绝10.0.0.7或10段访问,其他全部允许。
deny 10.0.0.7; #拒绝指定的地址或地址段
deny 10.0.0.0/24; #拒绝指定的地址或地址段
allow all; #允许所有的地址
注意:deny和allow的顺序是有影响的
默认情况下,从第一条规则进行匹配
如果匹配成功,则不继续匹配下面的内容。
如果匹配不成功,则继续往下寻找能匹配成功的内容。
测试配置:
server {
listen 80;
server_name jingxiang.zqfstack.com;
location / {
root /data/jingxiang;
index index.html index.htm;
}
location /centos/ {
allow 10.0.0.77; #只允许本机访问
deny all; #其他的全部拒绝
root /data/jingxiang;
charset utf-8;
autoindex on; #开启目录游览功能
autoindex_exact_size off; #显示大小
autoindex_localtime on; #显示时间
limit_rate_after 500k; # 指定了在传输了多少数据之后开始应用 limit_rate 限制
limit_rate 50k; # 限制了单个连接的最大下载速率(50KB/s)
}
}
本机访问是可以的。如下:
curl jingxiang.zqfstack.com/centos -L -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.27.0
Date: Tue, 19 Aug 2025 07:46:06 GMT
Content-Type: text/html
Content-Length: 169
Location: http://jingxiang.zqfstack.com/centos/
Connection: keep-alive
HTTP/1.1 200 OK
Server: nginx/1.27.0
Date: Tue, 19 Aug 2025 07:46:06 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
使用其他机器不可以访问,如下:
基于用户名和密码限制
基于用户名和密码限制 ,使用ngx_http_auth_basic_module模块。
yum install httpd-tools -y
/usr/bin/ab #压测工具
/usr/bin/htpasswd #生成密码工具
# 使用htpaaswd创建新的密码文件, -c创建新文件 -b允许命令行输入密码
htpasswd -b -c /usr/local/nginx/auth_pass zqf 1qaz@WSX
cat /usr/local/nginx/auth_pass
zqf:$apr1$Ae2.hhYG$QWtKcgiSyw81gtcMSKUl21
nginx配置文件:
server {
listen 80;
server_name jingxiang.zqfstack.com;
location / {
root /data/jingxiang;
index index.html index.htm;
}
location /centos/ {
auth_basic "zqf Auth access"; # 相当于一个说明
auth_basic_user_file /usr/local/nginx/auth_pass; # 外部链接的密码文件
root /data/jingxiang;
charset utf-8;
autoindex on; #开启目录游览功能
autoindex_exact_size off; #显示大小
autoindex_localtime on; #显示时间
limit_rate_after 500k; # 指定了在传输了多少数据之后开始应用 limit_rate 限制
limit_rate 50k; # 限制了单个连接的最大下载速率(50KB/s)
}
}
访问测试: