一、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访问限制方法,以满足复杂的应用需求。