如何从 x-forwared-for 添加 RequestHeader?

How can I add RequestHeader from the x-forwared-for?

我添加了如下配置以在 httpd.conf 文件(apache 2.4.51)上创建自定义 RequestHeader https://httpd.apache.org/docs/2.4/expr.html

RequestHeader set x-client-ip "expr=%{HTTP:X-Forwarded-For} =~ m#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#"

如果 x-forwarded-for 是 X-Forwarded-For: 10.20.30.40, 50.60.70.80 那么我希望 x-client-ip: 50.60.70.80.

但结果是x-client-ip:~ m#d{1

我已经在 sublime text 中对其进行了测试,但它运行良好。

您使用的构造不是 return 字符串,它只是一个匹配项。当您在字符串上下文中使用它时,它的解释不正确。

试试这个更简单的方法w/o 表达式

SetEnvIf X-Forwarded-For "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$" xff=
RequestHeader set x-client-ip %{xff}e env=xff

如果您最终需要更复杂的表达式,请仍然使用 setenvif 将输入转换为 envvar,然后在表达式中使用 envvars。