Nginx反代已經(jīng)寫(xiě)好,檢查參數(shù)傳遞也沒(méi)有問(wèn)題:
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; }
現(xiàn)在的問(wèn)題是,我后端的php程序獲取IP依靠變量$_SERVER['REMOTE_ADDR'],所以取得的是反代服務(wù)器的IP。
后端是apache是一個(gè)虛擬主機(jī),所以改動(dòng)后端可能性不大。
后端的php程序是加密的,也無(wú)法改動(dòng)。
現(xiàn)在請(qǐng)問(wèn):有沒(méi)有辦法不改動(dòng)程序把X-REAL-IP或HTTP_X_FORWARDED_FOR賦值到REMOTE_ADDR?譬如改動(dòng)php.ini能不能實(shí)現(xiàn)?
謝謝,此問(wèn)題被人發(fā)在hostloc via:http://www.hostloc.com/thread-138304-...
本人遇到相同的問(wèn)題,請(qǐng)教一下,謝謝
閉關(guān)修行中......
這篇文章中說(shuō)了在nginx+apache類(lèi)前后端搭建網(wǎng)站時(shí)獲取訪(fǎng)客真實(shí)ip的方法(這個(gè)獲取IP的方法考慮得比較周全),不過(guò)也是要你修改PHP程序的:http://www.ithr.org.cn/blogs/blog1.ph...
哈哈,找到方法了,看這篇文章“mod_rpaf , 令 Nginx 后端的 Apache 獲取到互聯(lián)網(wǎng) IP”:http://www.ithr.org.cn/blogs/blog1.ph...
這個(gè)要求有點(diǎn)苛刻啊 ,如果ap能改,就用mod_rpaf;
不能,簡(jiǎn)單一點(diǎn)吧,直接套一個(gè) index.php 然后賦值 $_SERVER['REMOTE_ADDR'] , 再調(diào)用真實(shí)的php代碼 ;
在apache那邊設(shè)置一下 rewrite,所有的php請(qǐng)求都rewrite到某個(gè) php ,該P(yáng)HP做的事情就是
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR']; require(ORIGINAL_REQUESTED_PHP.php);
或者試試 HAProxy 這種在更底層進(jìn)行轉(zhuǎn)發(fā)的軟件,不涉及到HTTP協(xié)議,就不用考慮這些HEADER的問(wèn)題了。
直接設(shè)置 proxy_set_header REMOTE_ADDR $remote_addr;
不行么?
$_SERVER['REMOTE_ADDR'] 是不能改動(dòng)的 從哪里來(lái)的請(qǐng)求 這個(gè)地址就是哪里
像前面幾位所說(shuō)的方法 在你的加密的代碼上面加一層殼子 賦個(gè)值是不錯(cuò)的方法