[英]Proxy IP Address Through Nginx Varnish Apache For WHMCS
在Ubuntu12.04.5 [Visitor> Nginx> SSL Termination> Varnish3.0> Apache]上成功配置設置后,我安裝了WHMCS並遇到錯誤“頁面未正確重定向”。
在網上搜索后,我遵循了這些步驟。
因此,我在有關的服務器塊中添加了以下行:
proxy_set_header X-Forwarded-Protocol $scheme;
然后在.htaccess文件中添加以下行:
if ($_SERVER['HTTPS'] !== on) {
SetEnvIf X-Forwarded-Protocol https HTTPS=on
一切順利,停止了重定向,我可以通過https訪問我的管理面板。
現在,在登錄WHMCS管理面板時,我發現WHMCS中的IP跟蹤在登錄頁面上顯示訪問者IP為127.0.0.1。 即使我在nginx服務器塊中添加了以下幾行:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然而,似乎IP沒有被傳遞出去,WHMCS正在選擇從端口80通過清漆來的代理127.0.0.1。
有人可以建議如何配置服務器,以使真實IP傳遞並被Apache / WHMCS理解嗎?
PS:我已經嘗試過但未能實現Real IP Module
我的nginx服務器塊如下所示:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Host $host;
}
}
另外,我將PHP Info檢入WMCS,並發現以下內容:
Apache環境
HTTP_X_REAL_IP-顯示我的CloudFlare DNS IP
HTTP_CF_CONNECTING_IP-顯示我的真實IP
HTTP_X_FORWARDED_FOR-顯示三個IP,即我的真實IP,我的CloudFlare DNS IP 127.0.0.1
也許這可以幫助調查此事。
-
在左右搜索之后,最終從WHMCS支持和CloudFlare模塊獲取了答案。
盡管我的CloudFlare模塊仍然無法正常工作,但是暫時我可以通過將所有CloudFlare IP添加到WHMCS安全設置中的受信任代理列表中來解決Real IP問題。
仍然不知道為什么mod_cloudflare無法為Apache服務器提供正確的IP :(
將此代碼添加到您的configuration.php中:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '') {
$ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
或嘗試:
if(isset($_SERVER['HTTP_CF_CONNECTING_IP']) && $_SERVER['HTTP_CF_CONNECTING_IP'] != '') {
$ip_address = $_SERVER['HTTP_CF_CONNECTING_IP'];
} else {
$ip_address = $_SERVER['REMOTE_ADDR'];
}
我在使用WHMCS和cloudflare保護時正在尋找解決方案..我嘗試了許多解決方案..從未成功..
我真的要感謝Saurabh Vashist分享該解決方案..在對WHMCS配置文件進行少量編輯后,將其放入:
if(isset($_SERVER['HTTP_CF_CONNECTING_IP']) &&
$_SERVER['HTTP_CF_CONNECTING_IP'] != '') {
$_SERVER["REMOTE_ADDR"] = $_SERVER['HTTP_CF_CONNECTING_IP'];
} else {
$_SERVER["REMOTE_ADDR"] = $_SERVER['REMOTE_ADDR'];
}
真實的訪客IP現在再次出現..
非常感謝您分享大家..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.