如何正確使用nginx-real-ip?

一、nginx-real-ip是什麼?

nginx-real-ip是nginx的一個模塊,可以在反向代理伺服器和後端伺服器之間傳遞客戶端真實的IP地址,從而方便伺服器做進一步的操作。

在默認情況下,當使用nginx等反向代理伺服器時,伺服器會認為請求來自於代理伺服器IP地址,而不是客戶端的IP地址。這樣,當處理日誌、檢查黑名單等功能時,就會出現問題。因此,使用nginx-real-ip就可以進行客戶端真實IP地址的獲取。

二、如何安裝nginx-real-ip模塊?

在安裝nginx之前,需要確保已經安裝了pcre-devel和openssl-devel,否則將無法成功安裝。

# 下載nginx-real-ip模塊
wget https://github.com/flant/nginx-http-rdns/archive/v0.4.3.tar.gz

# 解壓
tar zxvf v0.4.3.tar.gz

# 下載nginx
wget https://nginx.org/download/nginx-1.18.0.tar.gz

# 解壓並進入目錄
tar zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0

# 配置nginx,並添加nginx-real-ip模塊
./configure --with-http_ssl_module --add-dynamic-module=../nginx-http-rdns-0.4.3

# 編譯並安裝
make && make install

三、如何配置nginx-real-ip模塊?

在nginx的配置文件中,需要添加如下代碼:

http {
    # ...
    real_ip_header X-Real-IP;
    set_real_ip_from 172.0.0.0/8;
    # ...
}

其中:

real_ip_header:設置要獲取客戶端真實IP地址的HTTP頭

set_real_ip_from:設置代理伺服器IP地址

四、如何測試nginx-real-ip模塊?

可以通過訪問含有real-ip的測試頁面進行測試。首先,需要在nginx的配置文件中添加如下代碼:

server {
    listen 80;
    server_name test.com;
 
    location / {
        add_header X-Real-IP $remote_addr;
        return 200 'Hello World!';
    }
}

然後,可以使用curl命令測試:

curl -H "Host: test.com" -H "X-Forwarded-For: 1.2.3.4" http://127.0.0.1/
Hello World!

通過上面的測試,可以從返回的內容中看到real-ip獲取到了客戶端的真實IP地址。

五、nginx-real-ip的其他用途

除了獲取客戶端真實IP地址外,nginx-real-ip還可以用於:

防CC攻擊:可以根據客戶端IP地址進行限制或封鎖,從而保護網站的安全。

防黑名單:可以根據IP地址對黑名單進行識別和處理,從而過濾出壞人。

多網卡環境下的IP獲取:可以解決多網卡環境下客戶端IP獲取的問題。

六、總結

nginx-real-ip是nginx模塊中非常實用的一個模塊,可以簡單地解決反向代理伺服器和後端伺服器之間客戶端IP地址獲取的問題。同時,還可以應用於防CC攻擊、防黑名單等網站安全方面的操作。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200321.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 14:04
下一篇 2024-12-05 14:05

相關推薦

  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網路介面 在配置靜態ip之前,我們首先需要查看系統中的網路介面,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python檢測IP連通

    Python是一門強大的編程語言,常用於網路開發、數據分析等領域。IP地址是網路通信的基礎,在網路通信中,有時需要檢測IP地址是否連通。下面將從多個方面介紹Python檢測IP連通…

    編程 2025-04-28
  • 如何正確複製聖誕樹程序代碼?

    複製聖誕樹程序代碼是一項基本的技能,無論是初學者還是前端開發專業人員都需要掌握。本文將從多個方面詳細闡述如何正確地複製聖誕樹程序代碼,讓你能夠安心地應對代碼複製難題。 一、代碼複製…

    編程 2025-04-28
  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • NGINX許可權被拒絕問題

    NGINX是一款常見的Web伺服器軟體,但是在使用中常會遇到「permission denied」許可權被拒絕的問題。下文將從多個方面介紹本問題和解決方法。 一、系統許可權問題 1、檢…

    編程 2025-04-25
  • 關閉nginx命令詳解

    一、linux系統中關閉nginx命令 1、使用ps命令找到nginx的進程ID $ ps -ef | grep nginx 2、發送信號給nginx進程結束 $ kill -QU…

    編程 2025-04-25
  • 詳解 IP 正則表達式

    一、IP 地址基礎知識 在講解 IP 的正則表達式前,我們先來了解一下 IP 地址的基礎知識。IP 是 Internet Protocol 的縮寫,用於標識網路中的設備。IP 地址…

    編程 2025-04-24
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web伺服器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24

發表回復

登錄後才能評論