Nginx allowdeny 指令

allowdeny 是 Nginx 中用于控制 IP 访问的指令。它们通常用于 httpserverlocation 块中,用于允许或拒绝特定 IP 地址或 IP 段的访问。

语法

  • allow IP|CIDR|all;

  • deny IP|CIDR|all;

  • IP:单个 IP 地址,如 192.168.1.1

  • CIDR:IP 段,如 192.168.1.0/24

  • all:表示所有 IP 地址

规则

  • allowdeny 指令按顺序执行,匹配到第一个规则后停止。

  • 如果没有匹配到任何规则,默认是允许访问。

示例

  1. 允许特定 IP 访问,拒绝其他所有 IP

    location /admin {
        allow 192.168.1.100;
        deny all;
    }
    • 只有 192.168.1.100 可以访问 /admin,其他 IP 都会被拒绝。

  2. 允许特定 IP 段访问,拒绝其他所有 IP

    location /secure {
        allow 192.168.1.0/24;
        deny all;
    }
    • 192.168.1.0/24 网段的所有 IP 都可以访问 /secure,其他 IP 都会被拒绝。

  3. 允许多个 IP 访问,拒绝其他所有 IP

    location /private {
        allow 192.168.1.100;
        allow 192.168.1.101;
        deny all;
    }
    • 只有 192.168.1.100192.168.1.101 可以访问 /private,其他 IP 都会被拒绝。

  4. 允许所有 IP 访问,拒绝特定 IP

    location /public {
        deny 192.168.1.100;
        allow all;
    }
    • 除了 192.168.1.100,其他所有 IP 都可以访问 /public

  5. 允许特定 IP 访问,拒绝特定 IP 段

    location /restricted {
        allow 192.168.1.100;
        deny 192.168.1.0/24;
        allow all;
    }
    • 192.168.1.100 可以访问 /restricted192.168.1.0/24 网段的其他 IP 会被拒绝,其他所有 IP 都可以访问。

注意事项

  • allowdeny 指令的顺序很重要,Nginx 会按顺序匹配规则。

  • 如果使用 deny all;,确保在它之前有 allow 规则,否则所有访问都会被拒绝。

  • 可以在 httpserverlocation 块中使用这些指令,具体取决于你想要控制的访问范围。

本篇文章内容来源于:Nginxallow、deny:IP访问控制模块详细说明以及案例