Nginx访问权限控制
# allow指令
用于设置允许访问Nginx的客户端IP
allow address | CIDR | all
1
address:允许访问的客户端IP,不支持同时设置多个。如果有多个IP需要设置,需要重复使用allow指令 CIDR:允许访问的客户端的CIDR地址,例如 172.10.10.1/100,前面是32位IP地址,后面“\25”代表该IP地址中前25位是网络部分,其余位代表主机部分。
all:代表允许所有客户端访问。
注意
从Nginx 0.8.22版本后,该命令也支持IPv6地址,比如: allow 2620💯e000::8001;
# deny指令
与allow正好相反,用于设置禁止访问Nginx客户端IP
deny address | CIDR | all;
1
这两个指令可以在http块、server块或者location块中配置。
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
deny all;
}
1
2
3
4
5
2
3
4
5
在以上例子中192.168.1.0/24客户端是可以访问的。因为,Nginx配置在解析的过程中,遇到deny指令或者allow指令是按照顺序对当前客户端的连接进行访问权限检查的。如果遇到匹配的配置时,则停止继续向下搜索相关配置。因此,当192.168.1.0/24客户端访问时,Nginx在第三行解析配置发现允许该客户端访问,就不会继续向下解析第4行了。
# 禁止 IP 访问
进入到 nginx.conf 文件中,添加下 deny ip 其中ip为你要禁止的ip地址,例如:
location / {
root /usr/nginx/html;
index index.html index.htm;
deny 127.0.0.1; # 禁止 127.0.0.1 这个ip访问
}
1
2
3
4
5
2
3
4
5
只允许某一个 IP 访问时(注意:allow 与 deny 上下顺序不可上下颠倒)例如:
location / {
root /usr/nginx/html;
index index.html index.htm;
allow 127.0.0.1; # 只允许 127.0.0.1 这个ip访问
deny all;
}
1
2
3
4
5
6
2
3
4
5
6
# 不允许某一个文件夹被访问
例如不允许所有人访问 admin 这个文件夹可以这样配置:
location /{
root /usr/nginx/html;
index index.html index.htm;
}
location =/admin{
deny all;
}
# 使用正则
#location ^~/admin/{
# deny all;
#}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 不允许某一类文件被访问
例如不允许所有人访问 .php 结尾的文件时可以这样配置:
location /{
root /usr/nginx/html;
index index.html index.htm;
}
location ~/.php${
deny all;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
禁止所有外网ip,仅允许内网ip,配置如下:
location /{
root /usr/nginx/html;
index index.html index.htm;
}
location / {
deny 127.168.1.1;
allow 127.168.1.0/24;
deny all;
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
以上只是简单的介绍了一下权限配置,如有其它需求的话可以根据以上为基础自由组合进行配置即可。
上次更新: 2024/01/30, 00:35:17
- 01
- Node与GLIBC_2.27不兼容解决方案08-19
- 02
- Git清空本地文件跟踪缓存08-13