![有没有办法将 X-Forwarded-For 标头中的 IPv6 样式 IPv4 地址转换为 IPv4 样式?](https://linux22.com/image/803184/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%B0%86%20X-Forwarded-For%20%E6%A0%87%E5%A4%B4%E4%B8%AD%E7%9A%84%20IPv6%20%E6%A0%B7%E5%BC%8F%20IPv4%20%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2%E4%B8%BA%20IPv4%20%E6%A0%B7%E5%BC%8F%EF%BC%9F.png)
我运行的系统在 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_headers
X-Forwarded-For
在 php 应用程序看到它之前重写标头:
RequestHeader edit X-Forwarded-For "^::ffff:" ""