Использование REMOTE_USER в RewriteMap - PullRequest
0 голосов
/ 21 сентября 2018

Я создаю обратный прокси-сервер с 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: переменная} может использоваться для предварительных просмотров, которые выполняют внутренний (на основе URL) подзапрос для определения окончательногозначение переменной.Это можно использовать для доступа к переменной для перезаписи, которая недоступна на текущем этапе, но будет установлена ​​на более позднем этапе.

Например, для перезаписи в соответствии с переменной REMOTE_USER из контекста для каждого сервера(файл httpd.conf) вы должны использовать% {LA-U: REMOTE_USER} - эта переменная устанавливается фазами авторизации, которые следуют за фазой преобразования URL (во время которой работает mod_rewrite).

Отображение, кажется, оценивается на месте и не находит заданных пользователей на карте.Если я обновлю конфигурацию, чтобы иметь жестко запрограммированную строку пользователя, переадресация будет работать.Есть ли способ использовать RewriteMap и переменную REMOTE_USER для сопоставления?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...