簡體   English   中英

通過Nginx Varnish Apache for WHMCS的代理IP地址

[英]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

也許這可以幫助調查此事。

-

SV

在左右搜索之后,最終從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM