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

nginx如何根據(jù)用戶真實(shí)IP限源

 更新時(shí)間:2025年11月06日 08:57:21   作者:zlwuaiai  
文章介紹了Nginx限制IP訪問(wèn)的方式,包括通過(guò)remote_addr、X-Real-IP和X-Forwarded-For頭文件獲取用戶真實(shí)IP的方法,并詳細(xì)說(shuō)明了如何配置Nginx以實(shí)現(xiàn)基于白名單的訪問(wèn)控制

一、背景介紹

1、正常情況,nginx 限制ip訪問(wèn)方式:(根據(jù)remote_addr限制)

# nginx http\server 塊中配置
allow 192.168.6.0/16;
# allow all;
deny 1.2.3.4/32;
# deny all;

2、當(dāng)經(jīng)過(guò)waf或者cdn等代理后(remote_addr總是waf或者cdn等上一步代理地址)

3、確認(rèn)上層代理是否將用戶IP傳遞到http_x_forwarded_for中

4、一般http_x_forwarded_for中第一個(gè)地址為用戶IP,為了避免被人篡改,暫不采取直接拿第一個(gè)地址作為用戶真實(shí)IP

二、基礎(chǔ)知識(shí)介紹

1、remote_addr

HTTP協(xié)議沒(méi)有IP的概念,Remote Address來(lái)自于TCP連接,表示與服務(wù)端建立TCP連接的設(shè)備IP,因此,Remote Address無(wú)法偽造。

注意,這里的客戶端指的是直接請(qǐng)求Nginx的客戶端,非間接請(qǐng)求的客戶端。

用戶客戶端–發(fā)送請(qǐng)求->Nginx1 --轉(zhuǎn)發(fā)請(qǐng)求–>Nginx2->后端服務(wù)器

默認(rèn)情況下,針對(duì)Nginx1而言,remote_addr為用戶客戶端IP,對(duì)Nginx2而言,$remote_addr則為Nginx1的IP。

2、X-Real-IP

HTTP代理用于表示與它產(chǎn)生TCP連接的設(shè)備IP,可能是其他代理,也可能是真正的請(qǐng)求端。

用途:當(dāng)本機(jī) Nginx 處于反向代理后端時(shí)可以獲取到用戶的真實(shí)IP地址。

realip 功能介紹

使用:realip 功能需要 Nginx 添加 ngx_http_realip_module 模塊,默認(rèn)情況下是不被編譯,如果需要添加,請(qǐng)?jiān)诰幾g時(shí)添加 --with-http_realip_module 選項(xiàng)開(kāi)啟它。

realip 作用域

set_real_ip_from、real_ip_header 和 real_ip_recursive 都可以用于 http、 server、location 區(qū)域配置。

realip 部分參數(shù)解釋

set_real_ip_from:設(shè)置反向代理服務(wù)器,即信任服務(wù)器IP

real_ip_header X-Forwarded-For:用戶真實(shí)IP存在X-Forwarded-For請(qǐng)求頭中

real_ip_recursive:

	off:會(huì)將real_ip_header指定的HTTP頭中的最后一個(gè)IP作為真實(shí)IP

	on:會(huì)將real_ip_header指定的HTTP頭中的最后一個(gè)不是信任服務(wù)器的IP當(dāng)成真實(shí)IP

3、X-Forwarded-For

Nginx追加上去的,但前面部分來(lái)源于nginx收到的請(qǐng)求頭,這部分內(nèi)容不是很可信。符合IP格式的才可以使用,否則容易引發(fā)XSS或者SQL注入漏洞。

每次經(jīng)過(guò)proxy轉(zhuǎn)發(fā)都會(huì)有記錄,格式就是 client1,proxy1,proxy2,以逗號(hào)隔開(kāi)各個(gè)地址,由于它是非rfc標(biāo)準(zhǔn),所以默認(rèn)是沒(méi)有的,需要強(qiáng)制添加。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

追加一個(gè)X-Forwarded-For的值,實(shí)際上當(dāng)你搭建兩臺(tái)nginx在不同的ip上,并且都使用了這段配置,那你會(huì)發(fā)現(xiàn)在web服務(wù)器端通過(guò)request.getAttribute(“X-Forwarded-For”)獲得的將會(huì)是客戶端ip和第一臺(tái)nginx的ip。

4、deny機(jī)制

Nginx的deny和allow指令是由ngx_http_access_module模塊提供,Nginx安裝默認(rèn)內(nèi)置了該模塊。

語(yǔ)法

語(yǔ)法:allow/deny address | CIDR | unix: | all

它表示,允許/拒絕某個(gè)ip或者一個(gè)ip段訪問(wèn).如果指定unix:,那將允許socket的訪問(wèn)。

注意:unix在1.5.1中新加入的功能。

在nginx中,allow和deny的規(guī)則是按順序執(zhí)行的。

allow 指令

1、允許哪些 IP 訪問(wèn),all 表示允許所有;

2、作用域 http / server / location / limit_except ;

deny 指令

?1、禁止哪些 IP 訪問(wèn),all 表示禁止所有;

2、作用域 http / server / location / limit_except ;

運(yùn)行機(jī)制

根據(jù)remote_addr參數(shù)限制允許還是拒絕

三、當(dāng)前場(chǎng)景問(wèn)題

1、real_ip獲取用戶真實(shí)IP

經(jīng)過(guò)waf代理,remote_addr 為waf出口地址

  • 開(kāi)啟real_ip,取X-Forwarded-For中最后一個(gè)ip作為real_ip
  • 設(shè)置信任ip(中間代理服務(wù)器出口地址,本場(chǎng)景為waf出口地址),設(shè)置后real_ip在取值時(shí)候會(huì)過(guò)濾掉 X-Forwarded-For中信任的ip
  • 本場(chǎng)景作用域?yàn)閔ttp
set_real_ip_from 2.2.2.2;
set_real_ip_from 2.2.2.3;
real_ip_header X-Forwarded-For;
real_ip_recursive on;

2、賦值給remote_addr,使得deny生效

本場(chǎng)景此處作用域?yàn)閘ocation

proxy_set_header X-Real-IP $remote_addr;

3、如何限制用戶訪問(wèn)

本場(chǎng)景此處作用域?yàn)閘ocation,寫在上一步之后

include whitelist.conf;

其中whitelist.conf路徑為nginx.conf同級(jí)目錄中,文件中寫入內(nèi)容為:

allow 112.17.28.67    ;
allow 112.17.79.152/29;
deny all;

四、測(cè)試

1、檢查配置文件

nginx -t

2、重新加載nginx

nginx -s reload

3、測(cè)試白名單中有的地址能否訪問(wèn)

4、測(cè)試白名單中沒(méi)有的地址能否訪問(wèn)

五、注意

一定要檢查配置文件地址跟改動(dòng)的配置文件地址是否一致,否則會(huì)導(dǎo)致更改失效

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL的實(shí)現(xiàn)

    寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL的實(shí)現(xiàn)

    本文主要介紹了寶塔使用Nginx?Proxy?Manager申請(qǐng)SSL,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • nginx關(guān)閉favicon.ico、robots.txt日志記錄配置

    nginx關(guān)閉favicon.ico、robots.txt日志記錄配置

    這篇文章主要介紹了nginx關(guān)閉favicon.ico、robots.txt日志記錄配置,同時(shí)提供了不允許訪問(wèn)某些隱藏文件的配置方法,需要的朋友可以參考下
    2014-05-05
  • nginx下如何設(shè)置上傳文件大小

    nginx下如何設(shè)置上傳文件大小

    這篇文章主要介紹了nginx下如何設(shè)置上傳文件大小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Nginx配置WSS安全WebSocket代理的實(shí)現(xiàn)

    Nginx配置WSS安全WebSocket代理的實(shí)現(xiàn)

    本文詳細(xì)介紹Nginx配置WSS(WebSocket安全連接)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-12-12
  • nginx.pid打開(kāi)失敗以及失效的解決方案

    nginx.pid打開(kāi)失敗以及失效的解決方案

    在我們平常使用nginx的時(shí)候,經(jīng)常有可能會(huì)發(fā)現(xiàn)我們的pid找不到了,本文就介紹了nginx.pid打開(kāi)失敗以及失效的解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12
  • nginx 解決首頁(yè)跳轉(zhuǎn)問(wèn)題詳解

    nginx 解決首頁(yè)跳轉(zhuǎn)問(wèn)題詳解

    這篇文章主要介紹了nginx 解決首頁(yè)跳轉(zhuǎn)問(wèn)題詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Nginx防盜鏈根據(jù)UA屏蔽惡意User Agent請(qǐng)求(防蜘蛛)

    Nginx防盜鏈根據(jù)UA屏蔽惡意User Agent請(qǐng)求(防蜘蛛)

    相對(duì)于 Apache,Nginx 占用的系統(tǒng)資源更少,更適合 VPS 使用。惡意盜鏈的 User Agent 無(wú)處不在,博客更換到 WordPress 沒(méi)幾天,就被 SPAM(垃圾留言)盯上,又被暴力破解后臺(tái)用戶名密碼。今天來(lái)介紹 Nginx 屏蔽惡意 User Agent請(qǐng)求的方法
    2016-07-07
  • Nginx源碼研究之nginx限流模塊詳解

    Nginx源碼研究之nginx限流模塊詳解

    這篇文章主要介紹了Nginx源碼研究之nginx限流模塊詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • Ubuntu下nginx編譯安裝參數(shù)配置

    Ubuntu下nginx編譯安裝參數(shù)配置

    這篇文章主要介紹了Ubuntu下nginx編譯安裝參數(shù)配置,本文總結(jié)了一些依賴庫(kù)的安裝以及編碼配置參數(shù),需要的朋友可以參考下
    2015-06-06
  • Nginx設(shè)置成服務(wù)并開(kāi)機(jī)自動(dòng)啟動(dòng)的配置

    Nginx設(shè)置成服務(wù)并開(kāi)機(jī)自動(dòng)啟動(dòng)的配置

    Nginx?是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù),接下來(lái)通過(guò)本文給大家介紹Nginx設(shè)置成服務(wù)并開(kāi)機(jī)自動(dòng)啟動(dòng)的配置,需要的朋友可以參考下
    2022-01-01

最新評(píng)論

武宣县| 八宿县| 遵义市| 历史| 资中县| 荣成市| 河南省| 南溪县| 香格里拉县| 赤壁市| 启东市| 婺源县| 古丈县| 鄢陵县| 海盐县| 富源县| 鄂伦春自治旗| 永嘉县| 五大连池市| 桂平市| 宜城市| 湾仔区| 郑州市| 康保县| 师宗县| 肇庆市| 万宁市| 玉环县| 饶河县| 庆元县| 纳雍县| 兴仁县| 潞城市| 湖南省| 南澳县| 磐石市| 上蔡县| 陈巴尔虎旗| 中阳县| 新闻| 济南市|