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-...
本人遇到相同的問題,請教一下,謝謝
给我你的怀抱2017-05-16 17:06:55
這篇文章中說了在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...
淡淡烟草味2017-05-16 17:06:55
這個要求有點苛刻 ,如果ap能改,就用mod_rpaf;
不能,簡單一點吧,直接套一個 index.php 然後賦值 $_SERVER['REMOTE_ADDR'] , 再呼叫真實的php程式碼 ;
我想大声告诉你2017-05-16 17:06:55
在apache那邊設定 rewrite,所有的php請求都rewrite到某個 php ,該PHP做的事情就是
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; require(ORIGINAL_REQUESTED_PHP.php);
或試試 HAProxy 這種在更底層進行轉送的軟體,不涉及到HTTP協議,就不用考慮這些HEADER的問題了。
怪我咯2017-05-16 17:06:55
$_SERVER['REMOTE_ADDR'] 是不能改動的 從哪裡來的請求 這個位址就是哪裡
像前面幾位所說的方法 在你的加密的程式碼上面加一層殼子 賦個值是不錯的方法