Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过Nginx为WHMCS提供代理IP地址_Php_Apache_Nginx_Proxy_Varnish - Fatal编程技术网

Php 通过Nginx为WHMCS提供代理IP地址

Php 通过Nginx为WHMCS提供代理IP地址,php,apache,nginx,proxy,varnish,Php,Apache,Nginx,Proxy,Varnish,在Ubuntu12.04.5[Visitor>Nginx>SSL Termination>Varnish3.0>Apache]上成功配置安装程序后,我安装了WHMCS并遇到错误,页面没有正确重定向 在我遵循这些步骤之后 因此,我在相关服务器块中添加了以下行: proxy_set_header X-Forwarded-Protocol $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-F

在Ubuntu12.04.5[Visitor>Nginx>SSL Termination>Varnish3.0>Apache]上成功配置安装程序后,我安装了WHMCS并遇到错误,页面没有正确重定向

在我遵循这些步骤之后

因此,我在相关服务器块中添加了以下行:

proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后我在.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-Forwarded-Protocol $scheme;
proxy_set_header X-Real-IP  $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然而,IP似乎没有得到传递,WHMCS正在通过varnish从端口80选取代理127.0.0.1

有人可以建议如何配置服务器,以便Apache/WHMCS能够传递和理解真正的IP吗

PS:我已经试过了,但没能实现

My nginx服务器块如下所示:

此外,我将PHP信息检查到我的WMCS中,并发现以下内容:

Apache环境

HTTP_X_REAL_IP-显示我的CloudFlare DNS IP

HTTP\u CF\u连接\u IP-显示我的真实IP

HTTP_X_FORWARDED_FOR-显示了三个IP,即我的真实IP、我的CloudFlare DNS IP、127.0.0.1

也许这有助于调查此事

-


SV在左、右搜索后,最终从&得到答案

虽然我的CloudFlare模块仍然无法工作,但通过将所有CloudFlare IP添加到WHMCS安全设置中的受信任代理列表,我暂时能够解决真正的IP问题


仍然不知道为什么mod_cloudflare无法为Apache服务器提供正确的IP:

将此代码添加到您的配置中。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现在再次出现

非常感谢你和大家分享