Mar*_*man 4 apache mod-rewrite base64 http-headers
我正在使用apache作为前端http代理.我需要将一个带有特定环境变量值的标头发送到所有代理请求.像这样:
RequestHeader set myheader %{FOO}e
Run Code Online (Sandbox Code Playgroud)
问题是env变量的值FOO必须是base64编码的.是否可以动态地对该标头值进行b64编码?
mod_rewrite的?子请求?自定义模块?...
顺便说一句,env变量是由另一个apache模块创建的,遗憾的是我无法修复.
我想到了.使用mod_rewrite从外部程序读取/写入stdin/stdout,如下所示:
ProxyRequests on
RewriteEngine on
# 1
RewriteMap base64map "prg:/bin/b64e"
# 2
RewriteRule .* - [E=WIC:${base64map:%{QUERY_STRING}},NE]
# 3
RequestHeader set x-b64encoded "%{WIC}e"
# 4
RewriteRule ^proxy/.*$ http://localhost:9999 [P]
Run Code Online (Sandbox Code Playgroud)
base64map,它运行可执行文件(/bin/b64e),它读取stdin并在stdout上编码.base64map.输出用于将apache变量WIC设置为编码值.x-b64encoded是从值中创建的WICRequestHeader set myheader "expr=%{base64:%{FOO}e}"
Run Code Online (Sandbox Code Playgroud)
成功使用它对客户端证书执行额外的 Base64 编码传递,如下所示:
RequestHeader set X-ENV-SSL_CLIENT_CERTIFICATE "expr=%{base64:%{SSL_CLIENT_CERT}s}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |