在 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/