反向代理 - nginx前端反代,後端apache如何取得訪客的真實IP?
阿神
阿神 2017-05-16 17:04:55
0
5
594

Nginx反代已經寫好,檢查參數傳遞也沒問題:

server
      {
              listen  80;
              server_name  www.mjj.com;
              location / {
                       proxy_pass  http://www.youjj.com;
                       proxy_redirect off;
                       proxy_set_header   Host             $host;
                       proxy_set_header   X-Real-IP        $remote_addr;
                       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
              }
              access_log  off;
      }

現在的問題是,我後端的php程式取得IP依靠變數$_SERVER['REMOTE_ADDR'],所以取得的是反代伺服器的IP。
後端是apache是​​虛擬主機,所以改動後端可能性不大。
後端的php程式是加密的,也無法改變。
現在請問:有沒有辦法不改動程式把X-REAL-IP或HTTP_X_FORWARDED_FOR賦值到REMOTE_ADDR?譬如改動php.ini能不能實現?
謝謝,此問題被人發在hostloc via:http://www.hostloc.com/thread-138304-...
本人遇到相同的問題,請教一下,謝謝

阿神
阿神

闭关修行中......

全部回覆(5)
给我你的怀抱

這篇文章中說了在nginx+apache類前後端搭建網站時獲取訪客真實ip的方法(這個獲取IP的方法考慮得比較周全),不過也是要你修改PHP程序的:http://www. ithr.org.cn/blogs/blog1.ph...

哈哈,找到方法了,看這篇文章“mod_rpaf , 令 Nginx 後端的 Apache 獲取到互聯網 IP”:http://www.ithr.org.cn/blogs/blog1.ph...

淡淡烟草味

這個要求有點苛刻 ,如果ap能改,就用mod_rpaf;

不能,簡單一點吧,直接套一個 index.php 然後賦值 $_SERVER['REMOTE_ADDR'] , 再呼叫真實的php程式碼 ;

我想大声告诉你

在apache那邊設定 rewrite,所有的php請求都rewrite到某個 php ,該PHP做的事情就是

$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
require(ORIGINAL_REQUESTED_PHP.php);

或試試 HAProxy 這種在更底層進行轉送的軟體,不涉及到HTTP協議,就不用考慮這些HEADER的問題了。

phpcn_u1582

直接設定 proxy_set_header REMOTE_ADDR $remote_addr; 不行麼?

刘奇

$_SERVER['REMOTE_ADDR'] 是不能改動的 從哪裡來的請求 這個位址就是哪裡
像前面幾位所說的方法 在你的加密的程式碼上面加一層殼子 賦個值是不錯的方法

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板