您的位置:

Nginx限制IP访问

一、Nginx限制IP访问特定域名

  server {
    listen 80;
    server_name example.com;
    deny all;
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
  }

以上配置中,我们通过deny all来禁止所有IP访问example.com,然后通过allow指令来允许指定IP段的访问。

实际上,我们还可以使用更加灵活的模式匹配规则,比如使用通配符,以支持更多的IP模式匹配。例如:

  server {
    listen 80;
    server_name example.com;
    deny all;
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    allow 172.16.0.0/12;
    allow 192.168.0.*;
  }

二、Nginx限制IP段访问

Nginx还可以支持基于IP段的访问限制。我们可以通过设置双尖括号来指定IP范围。例如:

  location / {
    allow 192.168.0.0/16;
    allow 10.0.0.0/8;
    deny all;
  }

三、Nginx限制IP访问频率

在实际应用中,我们常常需要通过控制IP访问频率来避免过多的请求对服务器造成负载压力。Nginx提供了基于limit_req模块的请求频率控制功能,我们可以通过以下示例来限制IP每秒最多请求5次:

  http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

    server {
      location /api/ {
        limit_req zone=one burst=10 nodelay;
      }
    }
  }

我们通过定义limit_req_zone来设置IP访问频率限制规则,包括每秒的请求次数和对应的存储区域。然后通过location指定匹配规则,并使用limit_req指令来启用请求频率控制。

四、Nginx配置限制IP访问

Nginx提供了很多限制IP访问的方法,例如使用access模块或者limit_conn模块。我们可以通过以下示例来实现对IP的访问限制:

  http {
    #使用access模块实现IP访问限制
    geo $deny_ips {
      default 0;
      192.168.0.0/16 1;
      10.0.0.0/8 1;
    }

    server {
      location / {
        if ($deny_ips){
          return 403;
        }
      }
    }

    #使用limit_conn模块实现IP并发请求量限制
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
      location / {
        limit_conn addr 10;
      }
    }
  }

五、Linux限制IP访问

Linux系统也自带了iptables工具来实现对IP的访问限制,同时Nginx也可以与iptables进行结合使用,例如以下脚本:

  #允许本地IP段
  sudo iptables -A INPUT -p tcp -s 127.0.0.1/32 --dport 80 -j ACCEPT
  #允许指定IP段
  sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT
  #禁止其他IP访问
  sudo iptables -A INPUT -p tcp --dport 80 -j DROP

六、Nginx限制指定IP访问

有时候我们需要临时关闭特定IP的访问,我们可以使用如下配置:

  server {
    listen 80;
    server_name example.com;
    if ($remote_addr != 192.168.1.10){
        return 503;
    }
  }

七、Nginx限制同一IP访问频率

除了限制IP访问频率之外,我们还可以实现对同一IP的不同请求频率进行限制。我们可以使用limit_req和limit_conn模块的组合来实现以上限制,例如:

  http{
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=req:10m rate=5r/s;

    server {
      location /api/ {
        limit_req zone=req;
        limit_conn addr 5;
      }
    }
  }

八、Nginx限制IP并发量

除了限制请求频率之外,我们还可以对同一IP的并发请求量进行限制。我们可以使用limit_conn模块来实现IP并发请求量控制,例如:

  http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
      location /api/ {
        limit_conn addr 5;
      }
    }
  }

九、Nginx配置IP端口访问

我们可以通过以下示例来配置IP和端口的匹配规则:

  server {
    listen 80;
    server_name example.com;
    allow 192.168.0.1:60000;
    deny all;
  }

十、Nginx单个站点限制IP

我们可以通过以下示例来实现对单个站点的IP访问限制:

  server {
    listen 80;
    server_name example.com;
    allow 192.168.0.0/16;
    deny all;
  }

在实际应用中,我们可以根据需要自由选择不同的IP访问限制方法,以满足复杂的应用需求。