php - 使用 mod_rpaf / mod_remoteip 修复远程 IP 和 REMOTE_ADDR 不起作用
问题描述
所以我正在将一些遗留的 PHP 项目从旧服务器迁移到新服务器。新服务器使用 Debian 10 / Nginx / Apache 2.4 / PHP 5.6.40
我已经像以前一样设置了所有东西,使用 mod_rpaf 用来自 X-Real-IP 中的 nginx 的地址覆盖远程 IP 地址。$_SERVER['HTTP_X_REAL_IP']
我在 PHP中看到了正确的地址,但$_SERVER['REMOTE_ADDR']
仍然是“127.0.0.1”
我已经尝试过的事情:
- 在 rpaf.conf 文件中注释掉
<IfModule rpaf_module>
(一些旧答案表明模块名称可能不正确); - 将配置指令从
RPAFenable
等更改为RPAF_Enable
等等 - apache 拒绝启动,显然RPAFenable
格式正确; - 禁用 mod_rpaf 并改用 mod_remoteip - 无效;
- 使用 PHP 的 auto_prepend_file ini 文件选项将 REMOTE_ADDR 替换为 HTTP_X_REAL_IP - 尽管正在执行代码(用 进行检查),但没有任何效果
echo '1';
。
因此,我陷入了死胡同,没有其他选择,只能isset($_SERVER['HTTP_X_REAL_IP']) && $_SERVER['HTTP_X_REAL_IP'] || $_SERVER['REMOTE_ADDR']
在代码中到处使用丑陋的结构...
但我仍然希望我缺少一些东西。
更新:事实上, auto_prepend_file 选项有效,但感觉有点 hacky ......我仍然想找到一个更好的选项。
解决方案
推荐阅读
- java - 并行压缩单个大文件
- php - 类“App\Entities\Test”不是有效的实体或映射的超类。PHP, 教义
- swift - 我的 CPU 使用率恒定为 100%(Xcode,使用 SwiftUI)
- javascript - Storybook - 无法模拟嵌套的 React-Router-Dom 链接而不抛出无尽的 NPM 错误
- azure - 在 Azure 中创建一个简单的 VPN
- ros - 将机器人手 URDF 连接到 ROS 中的控制器
- excel - 循环遍历两个工作表中的两个单元格区域
- r - Bookdown 完成渲染没有任何错误但不产生输出
- flutter - 使用 source_gen 获取未定义的超类型或接口的名称
- github - (Github)“测试您的 SSH 连接”-> 主机密钥验证失败