當前位置: 首頁>>AGI專欄>>正文


nginx/openresty怎麽deny一個ip段

在 Nginx(或openresty) 中拒絕(deny)一個 IP 段可以通過 deny 指令結合 CIDR 表示法(無類別域間路由)來實現。以下是具體操作步驟:

1. 修改 Nginx 配置文件

找到你的 Nginx 配置文件(通常為 nginx.conf 或站點配置文件,如 /etc/nginx/sites-available/default),在需要限製的 server 或 location 塊中添加規則。

示例配置

server {
    listen 80;
    server_name example.com;

    # 拒絕特定 IP 段(如 192.168.1.0/24)
    deny 192.168.1.0/24;

    # 允許其他所有 IP
    allow all;

    location / {
        root /var/www/html;
        index index.html;
    }
}

2. CIDR 表示法說明

  • 192.168.1.0/24:表示從 192.168.1.0 到 192.168.1.255 的所有 IP。
  • 10.0.0.0/16:表示從 10.0.0.0 到 10.0.255.255 的所有 IP。

3. 規則生效順序

Nginx 的 allow 和 deny 指令按從上到下的順序匹配,遵循“首次匹配優先”原則。
若需拒絕某個 IP 段但允許其中的個別 IP,需將 allow 放在 deny 之後:

# 先允許特定 IP,再拒絕整個段
allow 192.168.1.100;
deny 192.168.1.0/24;
allow all;

4. 重載 Nginx 配置

保存文件後,檢查語法並重載配置:

# 檢查語法
sudo nginx -t

# 重載配置(無需重啟服務)
sudo nginx -s reload

5. 驗證規則

通過以下方式測試 IP 是否被拒絕:

  1. 使用被拒絕的 IP 訪問網站,觀察是否返回 403 Forbidden
  2. 查看 Nginx 訪問日誌:
    tail -f /var/log/nginx/access.log

常見場景示例

場景 1:拒絕多個 IP 段

deny 192.168.1.0/24;
deny 10.0.0.0/16;
allow all;

場景 2:僅拒絕特定路徑

location /admin {
    deny 192.168.1.0/24;
    allow all;
    # 其他配置...
}

注意事項

  • 防火牆配合:大規模 IP 攔截建議結合防火牆(如 iptables 或 ufw)使用,以減輕 Nginx 負擔。
  • 動態 IP 攔截:對於頻繁變化的 IP 攻擊,可結合 fail2ban 工具實現動態封禁。

通過上述步驟,你可以高效地通過 Nginx 拒絕特定 IP 段的訪問。

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4836.html,轉載請注明來源鏈接。