如何从 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。
我添加了如下配置以在 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。