溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nginx訪問限制怎么配置

發布時間:2022-04-26 17:19:52 來源:億速云 閱讀:615 作者:zzz 欄目:大數據
# Nginx訪問限制怎么配置

## 前言

在Web服務器管理中,合理配置訪問限制是保障服務穩定性和安全性的重要手段。Nginx作為高性能的Web服務器/反向代理服務器,提供了多種訪問控制功能。本文將詳細介紹Nginx中常見的訪問限制配置方法,包括連接頻率限制、請求速率限制、IP黑白名單等。

---

## 一、基礎訪問控制模塊

### 1.1 allow/deny指令

Nginx通過`ngx_http_access_module`模塊實現基礎的IP訪問控制:

```nginx
location /admin/ {
    deny  192.168.1.100;  # 禁止特定IP
    allow 192.168.1.0/24; # 允許整個子網
    deny  all;            # 默認拒絕其他所有
}

注意事項: - 規則按順序匹配,遇到第一個匹配項即停止 - 通常最后設置deny all作為默認規則 - IPv6地址需要用方括號包裹:deny [2001:0db8::1]

1.2 geo模塊實現動態黑白名單

對于更復雜的IP分組,可以使用ngx_http_geo_module

geo $blocked_ip {
    default         0;
    192.168.1.100   1;
    10.0.0.0/8      1;
    include         /etc/nginx/conf.d/blocked_ips.conf;
}

server {
    if ($blocked_ip) {
        return 403;
    }
}

二、請求頻率限制

2.1 limit_req模塊

ngx_http_limit_req_module模塊實現漏桶算法限流:

http {
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
    
    server {
        location /api/ {
            limit_req zone=api_limit burst=20 nodelay;
            proxy_pass http://backend;
        }
    }
}

參數說明: - zone=api_limit:10m:定義10MB內存空間存儲狀態 - rate=10r/s:每秒10個請求的限制 - burst=20:允許突發20個請求 - nodelay:不延遲處理突發請求

2.2 多維度限流策略

可以組合多個限制條件:

limit_req_zone $binary_remote_addr zone=per_ip:10m rate=5r/s;
limit_req_zone $server_name zone=per_server:10m rate=100r/s;

server {
    limit_req zone=per_ip burst=10;
    limit_req zone=per_server burst=50;
}

三、連接數限制

3.1 limit_conn模塊

ngx_http_limit_conn_module限制單個客戶端的并發連接數:

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
    
    server {
        location /download/ {
            limit_conn conn_limit 5; # 每個IP最多5個連接
            limit_rate_after 10m;    # 下載10MB后開始限速
            limit_rate 100k;         # 限速為100KB/s
        }
    }
}

3.2 分級別限制示例

limit_conn_zone $binary_remote_addr zone=per_ip:10m;
limit_conn_zone $server_name zone=per_server:10m;

server {
    limit_conn per_ip 10;
    limit_conn per_server 200;
}

四、高級防護配置

4.1 防止惡意掃描

# 阻止常見漏洞掃描
location ~* (wp-admin|phpmyadmin) {
    deny all;
}

# 限制User-Agent
if ($http_user_agent ~* (wget|curl|scanbot)) {
    return 403;
}

4.2 動態黑名單管理

結合Lua腳本實現動態封禁:

http {
    lua_shared_dict ip_blacklist 10m;
    
    server {
        access_by_lua_block {
            local blacklist = ngx.shared.ip_blacklist
            if blacklist:get(ngx.var.remote_addr) then
                ngx.exit(ngx.HTTP_FORBIDDEN)
            end
        }
    }
}

五、實戰配置示例

5.1 API接口保護

http {
    limit_req_zone $binary_remote_addr zone=api:10m rate=2r/s;
    limit_conn_zone $binary_remote_addr zone=api_conn:10m;

    server {
        location /api/v1/ {
            limit_req zone=api burst=5 nodelay;
            limit_conn api_conn 3;
            limit_rate 50k;
            
            proxy_pass http://api_backend;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

5.2 下載服務器配置

server {
    location /download/ {
        limit_conn addr 3;
        limit_rate_after 50m;
        limit_rate 1m;
        
        # 限制特定文件類型
        if ($request_uri ~* \.(zip|rar|tar)$) {
            limit_rate 500k;
        }
    }
}

六、性能調優建議

  1. 內存分配:根據預估訪問量合理設置zone內存大小
    • 1MB約可存儲16,000個IP狀態
  2. 日志監控:記錄被限制的請求
    
    limit_req_status 429;
    limit_conn_status 503;
    
  3. 分級防護:結合防火墻和WAF實現多層防護
  4. 壓力測試:使用ab、wrk等工具測試限流效果

七、常見問題排查

  1. 限流不生效

    • 檢查nginx是否加載了對應模塊
    • 確認指令位置(http/server/location塊)
  2. 內存不足

    nginx -t # 測試配置
    dmesg | grep nginx # 查看OOM錯誤
    
  3. 誤封問題

    • 通過$http_x_forwarded_for獲取真實IP(需前端有代理)
    • 設置白名單機制

結語

合理的訪問限制配置能有效防止CC攻擊、暴力破解等安全威脅,同時保障正常用戶的訪問體驗。建議根據實際業務需求組合使用多種限制策略,并定期審查和調整規則。對于高安全要求的場景,建議結合專業的WAF防火墻使用。

注意:所有配置修改后需執行 nginx -s reload 生效 “`

本文共計約1600字,涵蓋了Nginx訪問限制的主要配置方法和實踐建議。實際應用中應根據具體業務需求調整參數值。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女