RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nginx的配置文件如何設置頭信息保留真實IP不丟失

馬哥Linux運維 ? 來源:稀土掘金技術社區(qū) ? 2023-11-30 10:54 ? 次閱讀

在 Nginx 配置中設置頭信息以保留客戶端的真實 IP 地址通常是在使用反向代理的場景中需要的。當 Nginx 作為反向代理時,客戶端的真實 IP 地址可能會在轉發(fā)請求時丟失,因為到達應用服務器的請求看起來是從 Nginx 代理服務器發(fā)出的。為了解決這個問題,你可以使用X-Real-IP或X-Forwarded-For頭信息來轉發(fā)真實的客戶端 IP。

這里是一個基本的配置示例:


server {
    listen 80


    location / {
        proxy_set_header Host $host
        proxy_set_header X-Real-IP $remote_addr
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
        proxy_pass http://backend_server
    }
}

proxy_set_header Host $host;將請求的 Host 頭設置為原始請求的 Host 頭。

proxy_set_header X-Real-IP $remote_addr;將真實的客戶端 IP 地址添加到請求頭中。這里的$remote_addr是 Nginx 變量,代表客戶端的 IP 地址。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;添加一個X-Forwarded-For頭,其中包含原始客戶端的 IP 地址。$proxy_add_x_forwarded_for會追加客戶端的 IP 地址到已有的X-Forwarded-For頭信息中,如果存在的話。

請確保將http://backend_server替換為你的后端服務器的實際地址。

此外,確保你的應用服務器或框架已配置為從這些頭信息中讀取真實的客戶端 IP 地址。不同的應用和框架可能有不同的配置方法來支持這一點。

java代碼里怎么獲取真是的客戶端ip

在 Java 應用中獲取真實的客戶端 IP 地址通常涉及到解析 HTTP 請求的頭信息。當你的應用部署在一個反向代理(如 Nginx)后面時,代理通常會在每個請求中添加特定的頭信息(例如X-Real-IP或X-Forwarded-For),以傳遞原始客戶端的 IP 地址。

以下是一個基本的 Java 代碼示例,展示了如何在一個基于 Servlet 的應用中獲取這些頭信息:


javaCopy code
import javax.servlet.http.HttpServletRequest;


public class NetworkUtils {


    public static String getClientIp(HttpServletRequest request) {
        String xForwardedForHeader = request.getHeader("X-Forwarded-For");
        if (xForwardedForHeader == null) {
            return request.getRemoteAddr();
        } else {
            
            
            return xForwardedForHeader.split(",")[0].trim();
        }
    }
}

在這個例子中,getClientIp方法首先檢查X-Forwarded-For頭信息。如果這個頭信息存在,方法會解析它并返回列表中的第一個 IP 地址,因為X-Forwarded-For可能包含由多個代理添加的多個 IP 地址,其中第一個通常是原始客戶端的 IP 地址。如果X-Forwarded-For頭信息不存在,方法會回退到使用HttpServletRequest的getRemoteAddr()方法,這通常返回直接建立連接的客戶端(在這種情況下是代理服務器)的 IP 地址。

請注意,當處理來自不受信任源的X-Forwarded-For頭信息時,需要謹慎,因為它可能被惡意客戶端偽造。確保你的應用只在可信任的代理后面運行,并且考慮驗證頭信息中的 IP 地址。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9123

    瀏覽量

    85324
  • 文件
    +關注

    關注

    1

    文章

    565

    瀏覽量

    24727
  • 客戶端
    +關注

    關注

    1

    文章

    290

    瀏覽量

    16683
  • nginx
    +關注

    關注

    0

    文章

    149

    瀏覽量

    12170

原文標題:Nginx的配置文件如何設置頭信息保留真實IP不丟失

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux上Nginx獲得最佳性能的8種方法

    NGINX 是一種流行的、免費的開源 Web 服務器。默認的 NGINX 配置足以讓 Web 服務器正常工作。 但是,如果您想充分利用 NGINX,則需要使用其
    發(fā)表于 01-16 09:51 ?543次閱讀

    主要學習下nginx的安裝配置

    ##setenforce 1 設置SELinux 成為enforcing模式修改配置文件(需要重啟機器):修改/etc/selinux/config 文件,將SELINUX=enforcing改為SELINUX
    發(fā)表于 10-19 14:12

    開卡配置文件設置工具,sss量產(chǎn)INI文件設置工具

    開卡配置文件設置工具,sss量產(chǎn)INI文件設置工具
    發(fā)表于 04-21 01:22 ?27次下載
    開卡<b class='flag-5'>配置文件</b><b class='flag-5'>設置</b>工具,sss量產(chǎn)INI<b class='flag-5'>文件</b><b class='flag-5'>設置</b>工具

    ICD配置文件的詳細介紹和配置內容的詳細概述

    配置文件配置文件是利用SCL語言描述變電站設備對象模型后生成的文件,用于在不同廠商的配置工具之間交換配置信息。
    的頭像 發(fā)表于 06-02 11:16 ?1.8w次閱讀
    ICD<b class='flag-5'>配置文件</b>的詳細介紹和<b class='flag-5'>配置</b>內容的詳細概述

    AD8283評估板設計和配置文件

    AD8283評估板設計和配置文件
    發(fā)表于 05-31 16:04 ?9次下載
    AD8283評估板設計和<b class='flag-5'>配置文件</b>

    labview讀寫配置文件實例分享

    labview讀寫配置文件實例分享
    發(fā)表于 11-01 16:05 ?45次下載

    SpringBoot配置文件application

    Map配置 YML配置文件: sys-num: mymap: "{'a':'aaa','b':'bbb'}" 方法內: public class learnMap { @Value
    的頭像 發(fā)表于 01-13 15:28 ?647次閱讀

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納

    KT142C語音芯片配置文件總是不起作用?配置文件的問題集中歸納
    的頭像 發(fā)表于 10-20 15:04 ?572次閱讀
    KT142C語音芯片<b class='flag-5'>配置文件</b>總是不起作用?<b class='flag-5'>配置文件</b>的問題集中歸納

    ubuntu系統(tǒng)ip地址配置

    配置。但是這種方式只能臨時修改,當服務器重啟后,配置信息丟失。 直接修改配置文件。Ubuntu系統(tǒng)的配置文件在:/etc/network/
    的頭像 發(fā)表于 11-13 17:01 ?1.3w次閱讀

    linux修改網(wǎng)卡ip配置文件

    Linux是一種開源的操作系統(tǒng),因此,它給用戶提供了很高的自由度,可以根據(jù)個人需要進行各種定制和配置。其中,修改網(wǎng)絡接口配置文件是常見的操作,可以通過修改網(wǎng)卡ip配置文件
    的頭像 發(fā)表于 11-17 10:51 ?2226次閱讀

    springboot的全局配置文件有幾種

    Spring Boot是一種快速開發(fā)框架,其通過提供配置文件來實現(xiàn)對應用程序的配置。全局配置文件在Spring Boot中起著非常重要的作用,可以用于配置各種不同的屬性,包括數(shù)據(jù)庫連接
    的頭像 發(fā)表于 12-03 15:28 ?1562次閱讀

    php的配置文件是什么

    配置文件的名稱默認為php.ini。該文件通常位于PHP安裝目錄下的conf文件夾中。當PHP解釋器啟動時,會自動加載php.ini文件,并根據(jù)其中的
    的頭像 發(fā)表于 12-04 15:55 ?1524次閱讀

    oracle配置文件類型關聯(lián)

    ,并介紹它們之間的關聯(lián)關系。 init.ora文件 init.ora文件是Oracle數(shù)據(jù)庫的主要配置文件之一。它包含了數(shù)據(jù)庫實例的各種參數(shù)設置,例如SGA大小、用戶連接數(shù)、日志模式等
    的頭像 發(fā)表于 12-06 10:17 ?478次閱讀

    鴻蒙開發(fā):【Stage模型應用配置文件

    應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發(fā)者自定義信息等,這些信息在編譯構建、
    的頭像 發(fā)表于 06-15 09:15 ?1656次閱讀
    鴻蒙開發(fā):【Stage模型應用<b class='flag-5'>配置文件</b>】

    linux網(wǎng)卡配置文件

    /network-scripts/ifcfg-lo ? ? (1)配置虛擬機網(wǎng)絡 (2)編輯系統(tǒng)網(wǎng)卡配置文件 動態(tài)IP 鏈接:https://www.cnblogs.com/btcm409181423/p/17977163 ?
    的頭像 發(fā)表于 12-10 10:09 ?198次閱讀
    RM新时代网站-首页