Apache VirtualHost — ProxyPass для каждого пользователя

Apache VirtualHost — ProxyPass для каждого пользователя

Я пытаюсь настроить Apache для перенаправления пользователей по разным путям на основе их учетных данных аутентификации (используяhtpasswd). Мне удалось настроитьProxyPass, что позволяет перенаправить запрос на пользовательский путь, однако теперь все пользователи перенаправляются на один и тот же путь. Это происходит из-за использования одной и той же <Location />директивы для всех пользователей. Когда я пробую с <Location /user123>, <Location /user456>,.. это работает так, как и предполагалось, но я хотел бы, чтобы Apache перенаправлял /местоположение на соответствующие пути на основе предоставленных учетных данных. Возможно ли это?

решение1

Рассматриваем apache с mod_rewrite. Я думаю, что вы можете сделать что-то вроде следующего. Переменная remote_user доступна для apache в конфигурации. Я думаю, что вы можете сделать что-то вроде следующего.

RewriteCond "%{REMOTE_USER}"  "!^$"
RewriteRule "^/(.*)"  "/$1/%{REMOTE_USER}" [R]

Условие говорит, что если удаленный пользователь существует со значением, которое не является пустой строкой, то перезаписать url с удаленным url. Вы также можете сделать redirectmatch.

RedirectMatch "^/(.*)" "/$1/%{REMOTE_USER}"

Вот мои ссылки. Здесь показаны переменные, доступные для mod_rewrite https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Здесь показаны примеры mod_rewrite в действии. https://httpd.apache.org/docs/2.4/rewrite/remapping.html

решение2

Рассматривая вопрос более внимательно, поскольку вы используете экземпляр apache для аутентификации с использованием файла htpasswd. Я полагаю, что вы можете ссылаться на переменную REMOTE_USER.

Я думаю, вы можете использовать что-то вроде следующего в своей конфигурации Apache.

ProxyPass / http://localhost:8080/%{REMOTE_USER}/
ProxyPassReverse / http://localhost:8080/%{REMOTE_USER}/

Связанный контент