在RewriteMap中使用REMOTE_USER

时间:2018-09-21 14:29:45

标签: apache mod-rewrite

我正在用Apache 2.2创建一个反向代理,它将代理2个不同版本的服务。我需要逐步向某些用户推出这项新服务。我希望使用RewriteMap来促进这种推广。想法是映射文件可能具有以下格式:

USER_ID URI_TO_FORWARD

我已经在<VirtualHost>上下文中尝试了以下配置

RewriteMap user_to_version "txt:/etc/my_map_file" RewriteRule (.*) http://${user_to_version:%{LA-U:REMOTE_USER}|127.0.0.1:9254}$1 [P,L]

不幸的是,尽管有文档说

  

%{LA-U:variable}可以用于执行内部(基于URL)子请求以确定变量最终值的前瞻。可用于访问变量以进行重写,该变量在当前阶段尚不可用,但将在以后的阶段中进行设置。

     

例如,要在每个服务器上下文(httpd.conf文件)中根据REMOTE_USER变量进行重写,您必须使用%{LA-U:REMOTE_USER}-此变量由授权阶段设置,此后是授权阶段URL转换阶段(在mod_rewrite操作期间)。

该映射似乎正在现场评估,并且没有在地图中找到给定的用户。如果我将配置更新为具有硬编码的用户字符串,则转发有效。有什么方法可以使用RewriteMap和REMOTE_USER变量来映射它?

0 个答案:

没有答案