nginx前端反代,后端apache如何获取访客的真实IP?

发布于 2022-08-24 02:26:35 字数 995 浏览 9 评论 0

Nginx反代已经写好,检查参数传递也没有问题:

server
      {
              listen  80;
              server_name  www.mjj.com;
              location / {
                       proxy_pass  http://www.youjj.com;
                       proxy_redirect off;
                       proxy_set_header   Host             $host;
                       proxy_set_header   X-Real-IP        $remote_addr;
                       proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
              }
              access_log  off;
      }

现在的问题是,我后端的php程序获取IP依靠变量$_SERVER['REMOTE_ADDR'],所以取得的是反代服务器的IP。
后端是apache是一个虚拟主机,所以改动后端可能性不大。
后端的php程序是加密的,也无法改动。
现在请问:有没有办法不改动程序把X-REAL-IP或HTTP_X_FORWARDED_FOR赋值到REMOTE_ADDR?譬如改动php.ini能不能实现?
谢谢,此问题被人发在hostloc via:http://www.hostloc.com/thread-138304-...
本人遇到相同的问题,请教一下,谢谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

对你再特殊 2022-08-31 02:26:35

这篇文章中说了在nginx+apache类前后端搭建网站时获取访客真实ip的方法(这个获取IP的方法考虑得比较周全),不过也是要你修改PHP程序的:http://www.ithr.org.cn/blogs/blog1.ph...

哈哈,找到方法了,看这篇文章“mod_rpaf , 令 Nginx 后端的 Apache 获取到互联网 IP”:http://www.ithr.org.cn/blogs/blog1.ph...

纵山崖 2022-08-31 02:26:35

这个要求有点苛刻啊 ,如果ap能改,就用mod_rpaf;

不能,简单一点吧,直接套一个 index.php 然后赋值 $_SERVER['REMOTE_ADDR'] , 再调用真实的php代码 ;

牵你手 2022-08-31 02:26:35

在apache那邊設置一下 rewrite,所有的php請求都rewrite到某個 php ,該PHP做的事情就是

$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED_FOR'];
require(ORIGINAL_REQUESTED_PHP.php);

或者试试 HAProxy 这种在更底层进行转发的软件,不涉及到HTTP协议,就不用考虑这些HEADER的问题了。

独自唱情﹋歌 2022-08-31 02:26:35

直接设置 proxy_set_header REMOTE_ADDR $remote_addr; 不行么?

猫烠⑼条掵仅有一顆心 2022-08-31 02:26:35

$_SERVER['REMOTE_ADDR'] 是不能改动的 从哪里来的请求 这个地址就是哪里
像前面几位所说的方法 在你的加密的代码上面加一层壳子 赋个值是不错的方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文