【问题标题】:Proxy IP Address Through Nginx Varnish Apache For WHMCS通过 Nginx Varnish Apache 为 WHMCS 代理 IP 地址
【发布时间】:2015-06-19 02:14:19
【问题描述】:

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

searching online 之后,我按照这些步骤操作..

所以我在我关心的服务器块中添加了以下行:

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 正在通过 varnish 选择来自端口 80 的代理 127.0.0.1。

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

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;
        }
}

另外,我在 WMCS 中检查了 PHP 信息,发现以下内容:

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

【问题讨论】:

    标签: php apache nginx proxy varnish


    【解决方案1】:

    在使用带有 cloudflare 保护的 WHMCS 时,我一直在寻找解决方案。我尝试了很多解决方案 .. 从来没有工作过 ..

    我真的要感谢 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 现在又出现了 ..

    非常感谢大家的分享..

    【讨论】:

      【解决方案2】:

      左右搜索后,最终得到WHMCS Support & CloudFlare Module的答案。

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

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

      【讨论】:

        【解决方案3】:

        将此代码添加到您的 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'];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-25
          • 1970-01-01
          • 2015-09-11
          • 2017-09-27
          • 2012-02-05
          • 2022-12-10
          • 2018-10-22
          • 2020-07-05
          相关资源
          最近更新 更多