1. 程式人生 > >php中獲取nginx代理後的,客戶端真實IP

php中獲取nginx代理後的,客戶端真實IP

一般來說,PHP獲取IP用的是$_SERVER[‘REMOTE_ADDR’],但是經過代理後,這個方式獲取到的是代理伺服器的ip,不符合要求!如果需要獲取真實IP該做什麼呢?
1.修改nginx配置:proxy_set_header,一部分程式碼如下

server
    {
        listen 80 default_server;
        server_name _;
        index index.html index.htm index.php;
    location ~ (/.*|$) {
    proxy_pass_request_headers on;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://127.0.0.1:6000;
	}
省略....

其中proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;這個設定就是真實IP相關的,還有一種配置是proxy_set_header X-Forwarded-For $remote_addr;但是這種會丟失真實IP
2.配置好以後重啟nginx
3.通過$_SERVER['HTTP_X_FORWARDED_FOR']或者getenv('HTTP_X_FORWARDED_FOR')就可以拿到真實IP
但是注意!這種方式獲取到的IP是可以修改請求頭偽造的!

相關推薦

php獲取nginx代理客戶真實IP

一般來說,PHP獲取IP用的是$_SERVER[‘REMOTE_ADDR’],但是經過代理後,這個方式獲取到的是代理伺服器的ip,不符合要求!如果需要獲取真實IP該做什麼呢? 1.修改nginx配置:p

CCproxy代理客戶遠端登入外網伺服器的問題

要進行埠對映設定,具體如下: 假設您的代理伺服器地址為192.168.0.1,對於遠端桌面的設定可分三種情況:  1.如果要連線的地址為111.111.111.111,那麼我們需要設定埠對映: 在“設定”介面勾選“埠對映”,然後點後面的“E”按鈕,在其中建立一條新的規則: 目標地址—111.111.111.

Nginx多層反向代理透傳客戶真實IP

file width fff 透傳 cati 異常 查看 passwd 1.2 Nginx的反向代理能非常強大,可以配置多層反向代理,多層代理中最關心的就是客戶端IP的信息傳遞情況,當我們遇到問題後,分析日誌是解決問題最有效的途徑之一,涉及代理時我們肯定會分析源I

nginx配置解析之客戶真實IP的傳遞

形式 bubuko 轉發 pre 反向代理 The 用戶 地址 添加 前後端分離之後,采用nginx作為靜態服務器,並通過反向代理的方式實現接口跨域的方式,在降低開發成本的同時也帶來了諸多問題,例如客戶端真實IP的獲取。 在一些特殊場景下,比如風控和支付流程,往往需要獲取用

nginx代理tomcat部署服務器獲取客戶真實ip

nginx代理 獲取真實ip 1、環境部署說明後端部署在tomcat服務器上,前端用nginx做代理訪問tomcat部署目錄nginx配置:upstream wcfront{ server localhost:8991;//後臺接口 } server { listen

nginx反向代理應用程式如何獲取客戶真實IP

nginx反向代理後應用程式如何獲取客戶端真實IP? 2017年10月30日 10:32:03 it_0101 閱讀數:6200 標籤: tomcatjavawebnginx應用伺服器servlet 更多 個人分類: 學習經驗伺服器 版權宣告

多級nginx代理獲取客戶真實ip

今天服務裡的微信公眾號支付業務突然不能用了,報錯為網路環境未能通過安全驗證,請稍後再試。檢查後端日誌,沒有任何問題,看來是成功建立支付訂單,但是調起支付時出現了問題。上網查了一下,這個報錯的直接原因是傳入的客戶端ip與調起支付的ip不符。但是印象中我在程式碼中獲取的是X-Forwarded-For,就是請求來

Jetty/Tomcat + Nginx反向代理獲取客戶真實IP、域名、協議、埠

問題 Nginx反向代理後,Servlet應用通過request.getRemoteAddr()取到的IP是Nginx的IP地址,並非客戶端真實IP,通過request.getRequestURL()獲取的域名、協議、埠都是Nginx訪問Web應用時的域名、協

nginx負載均衡tomcat獲取客戶真實IP

tomcat在未加nginx前端負載均衡的情況下訪問日誌中可以直接拿到客戶端額真實IP地址,但是加了nginx前端負載均衡之後tomcat訪問日誌中得到的為nginx的ip,不是客戶端的ip,獲取客戶端的ip可以參照如下方法: 1. 配置nginx 要解決這

Redis Cluster集群搭建客戶的連接研究(Spring/Jedis)(待實踐)

turn ron 記錄 redis div println 刪除 clu name 說明:無論是否已經搭建好集群,還是使用什麽樣的客戶端去連接,都是必須把全部IP列表集成進去,然後隨機往其中一個IP寫。 這樣做的好處: 1、隨機IP寫入之後,Redis Cluster代

首層nginx 傳遞 二級代理nginx 客戶真實IP的方法

add 方法 5.1 pro rom bsp AD ade real-ip 首層nginx:先獲取真實IP($remote_addr),再將真實IP傳遞給X-Forwarded-For proxy_set_header X-Real-IP $remote_addr;

負載均衡獲取客戶真實ip

String ip3=request.getRemoteAddr(); 如果沒有配負載均衡,則request.getRemoteAddr() 獲取的就是真實客戶端IP,如果配了nginx負載均衡,則request.getRemoteAddr() 獲取的是負載均衡nginx伺服器的ip,而不是真實

Nginx多級代理統計客戶真實ip

前提概述:          由於普通反向代理沒加proxy_set_header X-Real-IP   $remote_addr; 後端伺服器統計ip來源時顯示的是前一個代理伺服器的ip地址,比如109.1訪問109.139沒設定上面代理語句,後端109.140日誌記錄

關於androidpn訊息當伺服器重啟客戶線上的session全部掉線解決方案

XmppManager private void addTask(Runnable runnable) { Log.d(LOGTAG, "addTask(runnable)..."); taskTracker.increase(); synchronized (

PHP獲取客戶真實IP

我們經常要用資料庫記錄使用者的IP,以下程式碼可以獲取客戶端真實的IP://獲取使用者真實IP function getIp() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_C

php獲取客戶真實ip地址的三種方法

php獲取使用者(客戶端)真實IP地址的兩種方法 第一種方法,還算靠譜,本人以前一直用的是這個方法: function get_real_ip(){ $ip=false; if(!empty($_SERVER['HTTP_CL

Kubernets獲取客戶真實IP總結

## 1. 導言 絕大多數業務場景都是需要知道客戶端IP的 在k8s中執行的業務專案,如何獲取到客戶端真實IP? 本文總結了通行的2種方式 要答案的直接看方式一、方式二和總結 SEO 關鍵字 nginx ingress客戶端真實ip kubernets獲取客戶端真實ip rke獲取客戶端真實ip ranche

Nginx】如何獲取客戶真實IP、域名、協議、埠?看這一篇就夠了!

## 寫在前面 > Nginx最為最受歡迎的反向代理和負載均衡伺服器,被廣泛的應用於網際網路專案中。這不僅僅是因為Nginx本身比較輕量,更多的是得益於Nginx的高效能特性,以及支援外掛化開發,為此,很多開發者或者公司基於Nginx開發出了眾多的高效能外掛。使用者可以根據自身的需求來為Nginx指定

nginx做負載均衡 tomcat獲得客戶真實ip

需要 項目 參考 real nginx代理 x-real-ip 發現 百度 通過 因項目需要做tomcat2臺機器的負載均衡,配置好負載環境後,發現tomcat的日誌一律是我前置nginx代理服務器的ip 通過百度教材發現需要修改nginx的配置文件,修改代理頭信息,傳遞

Java正確獲取客戶真實IP方法整理

urn con spa syn 服務器端 span tar url 自己的 在JSP裏,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟件就不能獲取到客戶端的真實