一、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訪問限制方法,以滿足複雜的應用需求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182409.html