最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx 訪問控制的多種方法

 更新時(shí)間:2025年12月08日 11:20:48   作者:猩火燎猿  
本文系統(tǒng)介紹了Nginx實(shí)現(xiàn)Web訪問控制的多種方法,包括IP黑白名單、路徑/方法/參數(shù)控制、HTTP基本認(rèn)證、防盜鏈機(jī)制、客戶端證書校驗(yàn)、限速限流、地理位置控制等基礎(chǔ)防護(hù)策略,感興趣的可以了解一下

一、IP 白名單與黑名單

1. 允許/拒絕指定IP

location /admin/ {
    allow 192.168.1.100;   # 僅允許該IP訪問
    allow 10.0.0.0/24;     # 或允許整個(gè)網(wǎng)段
    deny all;              # 其他全部拒絕
}

2. 全局黑名單

http {
    geo $block_ip {
        default 0;
        1.2.3.4 1;
        5.6.7.0/24 1;
    }
    server {
        if ($block_ip) {
            return 403;
        }
        ...
    }
}

geo模塊適合大規(guī)模黑名單。

二、基于路徑、方法、參數(shù)的訪問控制

1. 路徑限制

location /private/ {
    deny all;
}

2. 方法限制

location /api/ {
    if ($request_method !~ ^(GET|POST)$) {
        return 405;
    }
}

3. 參數(shù)限制

location /api/ {
    if ($arg_token = "") {
        return 403;
    }
}

三、HTTP 基本認(rèn)證(Basic Auth)

1. 啟用賬號(hào)密碼訪問控制

location /secure/ {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
}
  • .htpasswd 文件可用 htpasswd 工具生成。

四、Referer/UA 防盜鏈與防刷

1. 防盜鏈(Referer控制)

location /static/ {
    valid_referers none blocked *.example.com;
    if ($invalid_referer) {
        return 403;
    }
}

2. 防刷(UA控制)

if ($http_user_agent ~* "curl|bot|spider") {
    return 403;
}

五、客戶端證書校驗(yàn)(mTLS)

server {
    listen 443 ssl;
    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_client_certificate /etc/nginx/ssl/ca.crt;
    ssl_verify_client on;
    ...
}

適用于金融、政企等高安全場景。

六、限速限流(流量控制)

1. 單IP限速

limit_req_zone $binary_remote_addr zone=req_limit:10m rate=5r/s;
location /api/ {
    limit_req zone=req_limit burst=10 nodelay;
}

2. 連接數(shù)限制

limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_conn conn_limit 10;

七、地理位置訪問控制(GeoIP)

需安裝第三方模塊(如 ngx_http_geoip_module),可按國家/地區(qū)控制訪問:

geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
    default 0;
    CN 1; # 僅允許中國
}
server {
    if ($allowed_country = 0) {
        return 403;
    }
}

八、API 安全與精細(xì)控制

1. 精細(xì)化路徑/參數(shù)/方法控制

location /api/admin/ {
    allow 127.0.0.1;
    deny all;
}
location ~* /api/(delete|update)/ {
    if ($request_method != "POST") {
        return 405;
    }
}

2. 配合 OpenResty/Lua 動(dòng)態(tài)訪問控制

可以根據(jù)業(yè)務(wù)邏輯、數(shù)據(jù)庫、Redis等動(dòng)態(tài)判斷是否允許訪問。

九、企業(yè)級(jí)訪問控制建議

  1. 重要接口建議多重保護(hù)(IP+密碼+限流+Referer)
  2. 敏感路徑建議只對內(nèi)網(wǎng)或特定用戶開放
  3. 日志記錄所有被拒絕的訪問,便于審計(jì)和溯源
  4. 定期更新黑名單、白名單,防止失效
  5. 結(jié)合 WAF、API 網(wǎng)關(guān)、堡壘機(jī)等安全產(chǎn)品提升防護(hù)等級(jí)

十、訪問控制常見問題排查

  1. 控制未生效?
    • 檢查 location 優(yōu)先級(jí)、正則匹配順序。
  2. 誤封正常用戶?
    • 檢查 IP/Referer/UA 規(guī)則,避免誤傷。
  3. 限流后接口不可用?
    • 合理設(shè)置 burst,允許偶發(fā)高峰。
  4. 黑名單太大影響性能?
    • 用 geo、map 或 Lua 動(dòng)態(tài)判斷,避免配置膨脹。

十一、完整訪問控制配置示例

http {
    geo $block_ip {
        default 0;
        1.2.3.4 1;
        5.6.7.0/24 1;
    }
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
    server {
        listen 80;
        server_name www.example.com;
 
        if ($block_ip) { return 403; }
 
        location /admin/ {
            allow 192.168.1.100;
            deny all;
            auth_basic "Admin";
            auth_basic_user_file /etc/nginx/.htpasswd;
        }
 
        location /static/ {
            valid_referers none blocked *.example.com;
            if ($invalid_referer) { return 403; }
        }
 
        location /api/ {
            limit_req zone=req_limit burst=20 nodelay;
            if ($request_method !~ ^(GET|POST)$) { return 405; }
            if ($arg_token = "") { return 403; }
        }
    }
}

十二、多級(jí)訪問控制策略

1. 服務(wù)全局、Server級(jí)、Location級(jí)控制

  • http塊:全局黑名單/限流/Geo
  • server塊:站點(diǎn)級(jí)白名單/認(rèn)證
  • location塊:路徑級(jí)精細(xì)控制

示例:

http {
    geo $block_ip { ... }
    limit_req_zone $binary_remote_addr zone=req_limit:10m rate=20r/s;
    server {
        if ($block_ip) { return 403; }
        location /admin/ {
            allow 10.0.0.0/8;
            deny all;
        }
        location /api/ {
            limit_req zone=req_limit burst=10 nodelay;
        }
    }
}

建議高優(yōu)先級(jí)規(guī)則(如黑名單)放在上層,局部規(guī)則覆蓋全局。

十三、基于Header的訪問限制

1. 按Header內(nèi)容限制訪問

常用于API簽名、Token、特定應(yīng)用接入。

location /api/secure/ {
    if ($http_x_token != "your-secret-token") {
        return 403;
    }
}

2. 按Referer、Origin防止CSRF

if ($http_origin !~* ^https://trusted\.example\.com$) {
    return 403;
}

十四、按時(shí)間段控制訪問

適用于限時(shí)活動(dòng)、夜間維護(hù)、灰度發(fā)布等。

map $time_iso8601 $block_time {
    default 0;
    ~T02:..:.. 1;  # 02點(diǎn)整點(diǎn)到02:59:59 拒絕
}
server {
    if ($block_time) {
        return 403;
    }
}

也可用 Lua/定時(shí)腳本實(shí)現(xiàn)更復(fù)雜的時(shí)間控制。

十五、灰度/AB測試的訪問控制

1. 按用戶ID、Cookie、IP分流

map $cookie_abtest $upstream_group {
    default "old";
    "A" "new";
}
server {
    location / {
        proxy_pass http://$upstream_group;
    }
}

可結(jié)合 Lua 實(shí)現(xiàn)更靈活的灰度策略。

十六、動(dòng)態(tài)黑白名單(與外部系統(tǒng)結(jié)合)

1. 結(jié)合 Redis/MySQL 實(shí)現(xiàn)動(dòng)態(tài)名單

  • 用 OpenResty/Lua 讀取 Redis/MySQL,將名單實(shí)時(shí)更新到共享內(nèi)存,支持熱更新。
  • 適合大規(guī)模名單、頻繁變更場景。

示例:

access_by_lua_block {
    local redis = require "resty.redis"
    local red = redis:new()
    red:connect("127.0.0.1", 6379)
    local is_blocked = red:get("ip:" .. ngx.var.remote_addr)
    if is_blocked == "1" then
        ngx.exit(403)
    end
}

十七、日志、告警與審計(jì)

1. 記錄被拒絕訪問的請求

log_format rejectlog '$remote_addr $request $status $http_user_agent $time_local';
access_log /var/log/nginx/reject.log rejectlog if=$access_denied;

$access_denied 可用 map/Lua 動(dòng)態(tài)賦值。

2. 集成告警

  • 結(jié)合 ELK、Prometheus、Zabbix,監(jiān)控 403/405 等異常請求,自動(dòng)觸發(fā)告警。

十八、自動(dòng)化管理與集中策略

1. 配置集中管理

  • 采用 include 引入統(tǒng)一黑白名單、認(rèn)證配置,便于多站點(diǎn)維護(hù)。
include /etc/nginx/whitelist.conf;
include /etc/nginx/blacklist.conf;

2. 自動(dòng)化工具

  • 配合 Ansible/SaltStack/Puppet 實(shí)現(xiàn)名單、限流、認(rèn)證等策略的自動(dòng)分發(fā)和熱更新。

十九、與WAF/堡壘機(jī)/認(rèn)證系統(tǒng)集成

1. WAF防護(hù)

  • 可用 Nginx+OpenResty/Lua-resty-waf 或接入云WAF,實(shí)現(xiàn)SQL注入、XSS等攻擊防護(hù)。

2. 堡壘機(jī)/認(rèn)證系統(tǒng)

  • 重要接口后端部署堡壘機(jī)或認(rèn)證代理,前端Nginx只允許堡壘機(jī)IP訪問。

3. 第三方認(rèn)證(OAuth2、JWT等)

  • 可用 Lua 動(dòng)態(tài)解析JWT、OAuth2 Token,按業(yè)務(wù)規(guī)則控制訪問。

二十、常見安全場景實(shí)戰(zhàn)

1. 管理后臺(tái)只允許公司IP+二次認(rèn)證

location /admin/ {
    allow 10.0.0.0/8;
    deny all;
    auth_basic "Admin Only";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

2. API接口防刷+簽名校驗(yàn)

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=5r/s;
location /api/ {
    limit_req zone=api_limit burst=20 nodelay;
    if ($http_x_sign = "") { return 403; }
}

3. 靜態(tài)資源防盜鏈+限速

location /static/ {
    valid_referers none blocked *.example.com;
    if ($invalid_referer) { return 403; }
    limit_rate 100k;
}

二十一、訪問控制優(yōu)化建議

  1. 分層分級(jí)設(shè)計(jì),重要資源多重防護(hù)
  2. 動(dòng)態(tài)名單、限流、認(rèn)證與自動(dòng)化結(jié)合,提升響應(yīng)和運(yùn)維效率
  3. 日志與監(jiān)控全覆蓋,異常及時(shí)告警
  4. 定期安全審計(jì)和回溯,防止策略失效或被繞過

到此這篇關(guān)于Nginx 訪問控制的多種方法的文章就介紹到這了,更多相關(guān)Nginx 訪問控制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx中if語句的判斷條件與多條件判斷詳解

    Nginx中if語句的判斷條件與多條件判斷詳解

    這篇文章主要介紹了關(guān)于Nginx中if語句的判斷條件與多條件判斷的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Nginx基于多個(gè)ip的虛擬主機(jī)的詳細(xì)配置

    Nginx基于多個(gè)ip的虛擬主機(jī)的詳細(xì)配置

    本文詳細(xì)介紹了如何使用nginx配置基于多個(gè)IP地址的虛擬主機(jī),通過虛擬主機(jī),可以優(yōu)化服務(wù)器資源,提高安全性和靈活性,節(jié)省IP資源,文章也提供了基于域名和端口的虛擬主機(jī)配置代碼,方便讀者參考實(shí)施
    2024-11-11
  • SpringBoot前端后端分離之Nginx服務(wù)器下載安裝過程

    SpringBoot前端后端分離之Nginx服務(wù)器下載安裝過程

    Nginx是一款輕量級(jí)的Web服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,這篇文章主要介紹了SpringBoot前端后端分離之Nginx服務(wù)器,需要的朋友可以參考下
    2022-08-08
  • nginx虛擬主機(jī)配置實(shí)例詳解

    nginx虛擬主機(jī)配置實(shí)例詳解

    這篇文章主要介紹了nginx虛擬主機(jī)配置實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • filebeat收集json格式的tomcat日志詳解

    filebeat收集json格式的tomcat日志詳解

    這篇文章主要為大家介紹了filebeat收集json格式的tomcat日志詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置

    詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置

    這篇文章主要介紹了詳解Nginx防盜鏈和Nginx訪問控制與Nginx解析php的配置的相關(guān)資料,這里提供實(shí)例幫助大家,學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Nginx搭建高可用的實(shí)現(xiàn)

    Nginx搭建高可用的實(shí)現(xiàn)

    高可用HA是分布式系統(tǒng)架構(gòu)設(shè)計(jì)中必須考慮的因素之一,本文主要介紹了Nginx搭建高可用的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Nginx?map?實(shí)現(xiàn)時(shí)間格式轉(zhuǎn)換的方法

    Nginx?map?實(shí)現(xiàn)時(shí)間格式轉(zhuǎn)換的方法

    最近我們需要把?Nginx?的日志接入到自研的日志采集平臺(tái)上,但是這個(gè)平臺(tái)只支持?JSON?格式,所以需要把?Nginx?日志格式改成?JSON?格式,這篇文章主要介紹了Nginx?map?實(shí)現(xiàn)時(shí)間格式轉(zhuǎn)換,需要的朋友可以參考下
    2023-09-09
  • Nginx可視化nginxWebUI的具體使用

    Nginx可視化nginxWebUI的具體使用

    NginxWebUI 是一款圖形化管理 nginx 配置的工具,可以使用網(wǎng)頁來快速配置 nginx單機(jī)與集群的各項(xiàng)功能,本文就來介紹一下Nginx網(wǎng)頁配置工具nginxWebUI的具體使用,感興趣的可以了解一下
    2023-08-08
  • Nginx 作為反向代理時(shí)設(shè)置的請求頭

    Nginx 作為反向代理時(shí)設(shè)置的請求頭

    本文主要介紹了Nginx 作為反向代理時(shí)設(shè)置的請求頭,主要是三個(gè)參數(shù)在Nginx作為反向代理時(shí)的作用,分別是Host、X-Real-IP和X-Forwarded-For,這些參數(shù)用于將真實(shí)的客戶端信息傳遞給后端應(yīng)用,以確保后端能夠獲取到正確的客戶端信息,避免誤判和安全問題
    2026-02-02

最新評論

中卫市| 历史| 博客| 磴口县| 宿迁市| 山阳县| 抚顺县| 广河县| 磴口县| 河间市| 峨山| 阳城县| 遂溪县| 永吉县| 夏河县| 沐川县| 东平县| 苏州市| 宣恩县| 桦甸市| 富宁县| 新建县| 玛多县| 浠水县| 车险| 睢宁县| 交城县| 常宁市| 桂平市| 新巴尔虎左旗| 榆树市| 盖州市| 巴林右旗| 丽水市| 南召县| 芷江| 东乌珠穆沁旗| 琼结县| 巴马| 枣阳市| 乡宁县|