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

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

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

一、背景介紹

1、正常情況,nginx 限制ip訪問方式:(根據(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)過waf或者cdn等代理后(remote_addr總是waf或者cdn等上一步代理地址)

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

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

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

1、remote_addr

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

注意,這里的客戶端指的是直接請求Nginx的客戶端,非間接請求的客戶端。

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

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

2、X-Real-IP

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

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

realip 功能介紹

使用:realip 功能需要 Nginx 添加 ngx_http_realip_module 模塊,默認(rèn)情況下是不被編譯,如果需要添加,請在編譯時添加 --with-http_realip_module 選項開啟它。

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:用戶真實IP存在X-Forwarded-For請求頭中

real_ip_recursive:

	off:會將real_ip_header指定的HTTP頭中的最后一個IP作為真實IP

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

3、X-Forwarded-For

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

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

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

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

4、deny機(jī)制

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

語法

語法:allow/deny address | CIDR | unix: | all

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

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

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

allow 指令

1、允許哪些 IP 訪問,all 表示允許所有;

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

deny 指令

?1、禁止哪些 IP 訪問,all 表示禁止所有;

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

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

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

三、當(dāng)前場景問題

1、real_ip獲取用戶真實IP

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

  • 開啟real_ip,取X-Forwarded-For中最后一個ip作為real_ip
  • 設(shè)置信任ip(中間代理服務(wù)器出口地址,本場景為waf出口地址),設(shè)置后real_ip在取值時候會過濾掉 X-Forwarded-For中信任的ip
  • 本場景作用域為http
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生效

本場景此處作用域為location

proxy_set_header X-Real-IP $remote_addr;

3、如何限制用戶訪問

本場景此處作用域為location,寫在上一步之后

include whitelist.conf;

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

allow 112.17.28.67    ;
allow 112.17.79.152/29;
deny all;

四、測試

1、檢查配置文件

nginx -t

2、重新加載nginx

nginx -s reload

3、測試白名單中有的地址能否訪問

4、測試白名單中沒有的地址能否訪問

五、注意

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

總結(jié)

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

相關(guān)文章

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

    寶塔使用Nginx?Proxy?Manager申請SSL的實現(xiàn)

    本文主要介紹了寶塔使用Nginx?Proxy?Manager申請SSL,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(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日志記錄配置,同時提供了不允許訪問某些隱藏文件的配置方法,需要的朋友可以參考下
    2014-05-05
  • nginx下如何設(shè)置上傳文件大小

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

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

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

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

    nginx.pid打開失敗以及失效的解決方案

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

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

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

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

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

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

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

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

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

    Nginx設(shè)置成服務(wù)并開機(jī)自動啟動的配置

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

最新評論

永善县| 黄陵县| 长沙县| 涿州市| 调兵山市| 翼城县| 错那县| 石嘴山市| 克东县| 南宁市| 东莞市| 玉树县| 武山县| 西林县| 司法| 马尔康县| 姚安县| 乌鲁木齐县| 眉山市| 南召县| 滦平县| 册亨县| 紫金县| 普兰县| 苍溪县| 白玉县| 健康| 乐安县| 玉环县| 来宾市| 喀什市| 介休市| 长汀县| 榆林市| 镇平县| 甘南县| 诏安县| 玉屏| 诸暨市| 濉溪县| 玉树县|