参考资料

  1. Nginx 基于SSL的TCP代理服务器详细说明以及案例
  2. nginx 配置反向代理
  3. 如何通过响应头防御XSS?
  4. Nginx集群负载(基于LVS和Keepalived)搭建详细说明以及案例
  5. Nginx集群配置管理详细说明以及案例
  6. 如何设置Nginx的SSL/TLS加密?
  7. nginx -g详细说明以及案例
  8. Nginx负载均衡模块详细说明以及案例

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 块中使用这些指令,具体取决于你想要控制的访问范围。