php - 通过 Nginx Varnish Apache 为 WHMCS 代理 IP 地址

标签 php apache nginx proxy varnish

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

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

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

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 服务器 block 中添加了以下行:
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 服务器 block 如下所示:
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 信息检查到我的 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

最佳答案

我在使用带有 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 现在又出现了..

非常感谢各位大佬的分享..

关于php - 通过 Nginx Varnish Apache 为 WHMCS 代理 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29610912/

相关文章:

Apache httpd 设置和安装

R Shiny - 用户管理

php - 在 HTML 中自定义 CSS

php - 使用 PDO 插入 session 数据

virtualhost - apache virtualhost SSL +非SSL

c - libmemcached - memcached_mget 似乎阻塞

java - Spring MVC 应用程序中 NginX 反向代理后面的 getRemoteAddr()?

php 为什么它不断增加 2 分钟?

php - Swift 3 上传图片到 PHP 服务器

php - 如何在 .htaccess 文件中指定范围以重定向 url