在Nginx中,访问控制列表(Access Control List,ACL)通常通过allow和deny指令来实现。这些指令可以用于限制对特定资源的访问,基于IP地址、用户身份或其他条件。
以下是一个基本的Nginx ACL配置示例,该配置限制了对特定资源的访问:
server {
listen 80;
server_name example.com;
location /restricted/ {
# 允许来自特定IP地址的访问
allow 192.168.1.1;
allow 192.168.1.2;
# 拒绝所有其他IP地址的访问
deny all;
root /var/www/html/restricted;
index index.html;
}
}
在这个例子中,只有IP地址为192.168.1.1和192.168.1.2的用户可以访问/restricted/目录下的资源。所有其他IP地址的用户将被拒绝访问。
Nginx本身不直接支持基于用户身份的访问控制,但可以与外部认证模块(如auth_basic和auth_request)结合使用来实现这一功能。
server {
listen 80;
server_name example.com;
location /protected/ {
# 启用基本认证
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
root /var/www/html/protected;
index index.html;
}
}
在这个例子中,访问/protected/目录下的资源需要提供有效的用户名和密码。用户名和密码存储在/etc/nginx/.htpasswd文件中。
allow和deny指令:你可以在同一个location块中组合使用多个allow和deny指令来创建更复杂的访问控制规则。
server {
listen 80;
server_name example.com;
location /mixed/ {
# 允许来自特定IP范围的访问
allow 192.168.1.0/24;
allow 10.0.0.0/8;
# 拒绝所有其他IP地址的访问
deny all;
root /var/www/html/mixed;
index index.html;
}
}
在这个例子中,IP地址在192.168.1.0/24和10.0.0.0/8范围内的用户可以访问/mixed/目录下的资源。所有其他IP地址的用户将被拒绝访问。
请注意,在配置Nginx ACL时,allow指令应该在deny指令之前出现,以确保正确的访问控制逻辑。此外,确保在修改Nginx配置文件后重新加载或重启Nginx服务以使更改生效。