有没有办法将 X-Forwarded-For 标头中的 IPv6 样式 IPv4 地址转换为 IPv4 样式?

有没有办法将 X-Forwarded-For 标头中的 IPv6 样式 IPv4 地址转换为 IPv4 样式?

我运行的系统在 Squid 加速器前面有一个 Pound 反向代理,反过来在 Apache2 前面为一些基于 PHP 的 Web 应用程序提供支持。

Pound 守护进程配置为将 X-Forwarded-For 标头发送到 Apache,以便上述应用程序可以确定消息的真实来源(squid 配置为透明地传递 X-Forwarded-For 标头而不进行修改)。但是,Pound 在 XFF 标头中将 IPv4 地址表示为::ffff:1.2.3.4而不是1.2.3.4,这会使应用程序无法正常工作。

除了修改每个应用程序以正确处理::ffff:1.2.3.4情况之外,是否有办法阻止 Pound 使用 IPv6 表示法或在 Apache 中预先将 IPv6 表示法转换回 IPv4 表示法?

答案1

你应该能够使用mod_headersX-Forwarded-For在 php 应用程序看到它之前重写标头:

RequestHeader edit X-Forwarded-For "^::ffff:" ""

相关内容