Mat*_*ark 5 mod-rewrite reverse-proxy mod-ssl apache-2.2
好吧,我已经花了一整天的时间——
我正在使用带有 mod_ssl 的 apache 我正在尝试采用一个现有的环境标头“%{SSL_CLIENT_S_DN_CN}s”,它看起来像“Lastname Firstname Mi username”并设置一个名为 USERNAME 的新标头并将其设置为仅等于 username(最后一个空格和字符串末尾之间的字符)
然后我将该标头反向代理到后端主机,后端主机将使用它来识别用户。
我尝试了很多不同的东西。我不知道问题是我不理解 perl 正则表达式,还是我不理解语法,或者我没有把它放在正确的地方,或者三者兼而有之。
这是我尝试过的一件事的示例:
SetEnvIf SSL_CLIENT_S_DN_CN (.*\ )(.*) newhostname=$2
RequestHeader set HOSTNAME "%{newhostname}e"
Run Code Online (Sandbox Code Playgroud)
我真正想要的是一个新的标头主机名,它等于 DN_CN 环境变量中的最后一个非空白字符。
好吧——我在本周中就弄清楚了,但仍然想给某人一个获得赏金的机会。
令人惊讶的是,这在任何地方都没有很好的记录,但是当我使用 mod_headers 来执行此操作时,您可以在此处找到该文档。
你想要做的就是设置 header,无论你是从 ssl 还是环境中获取它。 然后,您可以使用正则表达式和捕获组就地编辑标题。
一些例子:
RequestHeader 设置 REMOTE_USER“%{SSL_CLIENT_S_DN_CN}s” RequestHeader 编辑 REMOTE_USER (.*\s)(.*) $2 RequestHeader 设置 AUTHENTICATE_CN“%{SSL_CLIENT_S_DN_CN}s” RequestHeader 编辑 AUTHENTICATE_CN (.*\s)(.*) $1 RequestHeader 设置 AUTHENTICATE_MAIL“%{SSL_CLIENT_S_DN_CN}s” RequestHeader 编辑 AUTHENTICATE_MAIL (.*\s)(.*) $2@gmail.com
归档时间: |
|
查看次数: |
4989 次 |
最近记录: |