温馨提示×

Nginx如何配置访问控制列表

小樊
43
2025-12-24 17:53:54
栏目: 编程语言

在Nginx中,访问控制列表(Access Control List,ACL)通常通过allowdeny指令来实现。这些指令可以用于限制对特定资源的访问,基于IP地址、用户身份或其他条件。

以下是一个基本的Nginx ACL配置示例,该配置限制了对特定资源的访问:

  1. 基于IP地址的访问控制
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.1192.168.1.2的用户可以访问/restricted/目录下的资源。所有其他IP地址的用户将被拒绝访问。

  1. 基于用户身份的访问控制

Nginx本身不直接支持基于用户身份的访问控制,但可以与外部认证模块(如auth_basicauth_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文件中。

  1. 组合使用allowdeny指令

你可以在同一个location块中组合使用多个allowdeny指令来创建更复杂的访问控制规则。

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/2410.0.0.0/8范围内的用户可以访问/mixed/目录下的资源。所有其他IP地址的用户将被拒绝访问。

请注意,在配置Nginx ACL时,allow指令应该在deny指令之前出现,以确保正确的访问控制逻辑。此外,确保在修改Nginx配置文件后重新加载或重启Nginx服务以使更改生效。

0