欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx配置allow和deny指令的使用

 更新時(shí)間:2025年05月12日 10:08:05   作者:XMYX-0  
在Nginx配置中,allow和deny指令用于基于IP地址的訪問控制,幫助管理員靈活管理資源訪問權(quán)限,具有一定的參考價(jià)值,感興趣的可以了解一下

介紹

在 Nginx 配置中,allow 和 deny 指令用于基于 IP 地址的訪問控制,幫助管理員靈活管理資源訪問權(quán)限。本文將結(jié)合配置語法、優(yōu)先級(jí)規(guī)則、應(yīng)用場(chǎng)景及優(yōu)化技巧,全面解析這兩個(gè)指令的使用方法。

  • allow:允許指定的 IP 地址或網(wǎng)段訪問。
  • deny:禁止指定的 IP 地址或網(wǎng)段訪問。

指令簡(jiǎn)介與基本語法

allow 和 deny 屬于 ngx_http_access_module 模塊,默認(rèn)已集成在 Nginx 中(除非編譯時(shí)通過 --without-http_access_module 禁用)。其語法如下:

allow <IP地址|CIDR|unix: | all>;
deny <IP地址|CIDR|unix: | all>;
  • IP地址:支持 IPv4(如 192.168.1.1)和 IPv6(如 2001:0db8::/32)。
  • CIDR:表示 IP 段(如 192.168.1.0/24)。
  • unix::允許或禁止 Unix 域套接字訪問(需 Nginx 1.5.1+)。
  • all:匹配所有地址。

優(yōu)先級(jí)與執(zhí)行順序

Nginx 采用 “順序優(yōu)先,首次匹配” 的規(guī)則:

  • 按配置順序逐條檢查規(guī)則,匹配到第一條后立即生效,后續(xù)規(guī)則忽略。
  • 默認(rèn)允許所有訪問,除非顯式使用 deny all; 全局拒絕。

示例分析

location / {
    deny 192.168.1.1;        # 拒絕單個(gè) IP
    allow 192.168.1.0/24;    # 允許整個(gè)網(wǎng)段
    deny all;                # 拒絕其他所有 IP
}
  • 192.168.1.1 匹配第一條 deny,直接拒絕。
  • 網(wǎng)段內(nèi)其他 IP(如 192.168.1.2)匹配 allow 后放行。
  • 非網(wǎng)段 IP(如 10.0.0.1)最終被 deny all 拒絕。

典型應(yīng)用場(chǎng)景

限制管理后臺(tái)訪問

location /admin {
    allow 192.168.1.0/24;
    deny all;
    error_page 403 /custom_403.html;  # 自定義錯(cuò)誤頁面
}

僅允許內(nèi)網(wǎng)訪問 /admin,其他 IP 返回 403 并跳轉(zhuǎn)至自定義頁面。

白名單控制 API 接口

location /api {
    allow 203.0.113.5;
    deny all;
    proxy_pass http://backend;
}

僅允許特定 IP 訪問 API,防止未授權(quán)調(diào)用。

按路徑差異化控制

location /public {
    allow all;
}

location /private {
    allow 10.0.0.0/8;
    deny all;
}

不同路徑設(shè)置獨(dú)立的訪問策略,兼顧靈活性與安全性。

高級(jí)配置技巧

反向代理環(huán)境下的真實(shí) IP 獲取

當(dāng) Nginx 位于代理后方時(shí),需通過 X-Forwarded-For 獲取真實(shí)客戶端 IP:

set_real_ip_from 10.0.0.0/8;   # 信任的代理服務(wù)器 IP 段
real_ip_header X-Forwarded-For;
real_ip_recursive on;           # 排除可信代理 IP,獲取真實(shí)客戶端 IP

避免誤判代理服務(wù)器 IP 為客戶端地址。

使用 geo 模塊優(yōu)化性能

大規(guī)模 IP 規(guī)則時(shí),geo 模塊可提升匹配效率:

geo $blocked_ip {
    default 0;
    192.168.1.0/24 1;
    10.0.0.5 1;
}

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

預(yù)定義 IP 匹配狀態(tài),減少動(dòng)態(tài)規(guī)則解析開銷。

動(dòng)態(tài)封禁與自動(dòng)化

結(jié)合 Fail2ban 或 iptables 自動(dòng)封禁惡意 IP:

  • 日志監(jiān)控:配置 Nginx 記錄訪問日志。
  • 規(guī)則聯(lián)動(dòng):Fail2ban 分析日志后動(dòng)態(tài)更新 Nginx 黑名單文件,通過 include 指令加載。

常見問題與避坑指南

規(guī)則順序錯(cuò)誤導(dǎo)致漏洞

錯(cuò)誤示例:

allow all;
deny 192.168.1.1;  # 此規(guī)則失效!

正確寫法應(yīng)先拒絕再允許:

deny 192.168.1.1;
allow all;

反向代理未配置真實(shí) IP

未設(shè)置 real_ip_header 時(shí),allow/deny 可能基于代理服務(wù)器 IP 而非客戶端 IP,導(dǎo)致錯(cuò)誤封禁。

IPv4/IPv6 兼容性問題

若需獨(dú)立控制 IPv6,需顯式指定:

allow 2001:0db8::/32;
deny 2001:0db8::1;

性能優(yōu)化建議

  • 合并規(guī)則:使用 CIDR 減少條目,如將多個(gè) /24 合并為 /16。
  • 分文件管理:通過 include 引入外部規(guī)則文件,提升可維護(hù)性:
    include /etc/nginx/conf.d/ip-whitelist.conf;
    deny all;
    
  • 避免過度使用 ifif 指令可能引發(fā)性能問題,優(yōu)先在 location 或 server 塊中配置規(guī)則。

總結(jié)

allow 和 deny 是 Nginx 實(shí)現(xiàn) IP 訪問控制的核心指令,需重點(diǎn)注意:

  • 順序決定優(yōu)先級(jí),規(guī)則按從上到下執(zhí)行。
  • 反向代理需配置真實(shí) IP,避免誤判。
  • 性能優(yōu)化:合并規(guī)則、使用 geo 模塊、動(dòng)態(tài)工具聯(lián)動(dòng)。

通過合理設(shè)計(jì)規(guī)則,可有效保護(hù)敏感接口、抵御惡意流量,同時(shí)保持服務(wù)的高效穩(wěn)定。

到此這篇關(guān)于Nginx配置allow和deny指令的使用的文章就介紹到這了,更多相關(guān)Nginx配置allow和deny指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析nginx 客戶端返回499的錯(cuò)誤碼的問題

    淺析nginx 客戶端返回499的錯(cuò)誤碼的問題

    我們服務(wù)器客戶端一直有返回錯(cuò)誤碼499的日志,以前覺得比例不高,就沒有仔細(xì)查過,最近有領(lǐng)導(dǎo)問這個(gè)問題,為什么耗時(shí)只有0.0幾秒,為啥還499了?最近幾天就把這個(gè)問題跟蹤定位了一下,這里做個(gè)記錄,對(duì)nginx返回499錯(cuò)誤碼相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-10-10
  • Nginx 502 Bad Gateway錯(cuò)誤常見的4種原因和解決方法

    Nginx 502 Bad Gateway錯(cuò)誤常見的4種原因和解決方法

    這篇文章主要介紹了Nginx 502 Bad Gateway錯(cuò)誤常見的4種原因和解決方法,本文適用FastCGI環(huán)境,其中多數(shù)原因通過配置相關(guān)參數(shù)即可解決,需要的朋友可以參考下
    2015-05-05
  • nginx使用sticky基于cookie的會(huì)話保持方式

    nginx使用sticky基于cookie的會(huì)話保持方式

    這篇文章主要介紹了nginx使用sticky基于cookie的會(huì)話保持方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 利用nginx解決跨域問題的方法(以flask為例)

    利用nginx解決跨域問題的方法(以flask為例)

    這篇文章主要介紹了利用nginx解決跨域問題的方法,文中以flask為例給大家介紹的很詳細(xì),需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-02-02
  • Nginx實(shí)現(xiàn)清除緩存內(nèi)容

    Nginx實(shí)現(xiàn)清除緩存內(nèi)容

    NGINX可以從緩存中刪除舊的和過期的緩存文件,本文主要介紹了Nginx實(shí)現(xiàn)清除緩存內(nèi)容,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Nginx的超時(shí)timeout配置詳解

    Nginx的超時(shí)timeout配置詳解

    本篇文章主要介紹了Nginx的超時(shí)timeout配置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • nginx下配置thinkphp文件的方法

    nginx下配置thinkphp文件的方法

    這篇文章主要介紹了nginx下配置thinkphp文件的方法,需要的朋友可以參考下
    2017-01-01
  • Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細(xì)過程

    Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細(xì)過程

    今天通過本文給大家分享Ubuntu使用nginx搭建webdav文件服務(wù)器的詳細(xì)過程,在這小編提示大家在安裝nginx時(shí)需要先安裝nginx-full,具體安裝方法跟隨小編一起通過本文學(xué)習(xí)下吧
    2021-05-05
  • 安裝配置php-fpm來搭建Nginx+PHP的生產(chǎn)環(huán)境

    安裝配置php-fpm來搭建Nginx+PHP的生產(chǎn)環(huán)境

    這篇文章主要介紹了安裝配置php-fpm來搭建Nginx+PHP的生產(chǎn)環(huán)境的方法,php-fpm的作用是將FastCGI進(jìn)程管理整合進(jìn)PHP包,需要的朋友可以參考下
    2016-01-01
  • uwsgi+nginx代理Django無法訪問靜態(tài)資源的解決

    uwsgi+nginx代理Django無法訪問靜態(tài)資源的解決

    這篇文章主要介紹了uwsgi+nginx代理Django無法訪問靜態(tài)資源,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05

最新評(píng)論