
Estou tentando configurar o Apache para redirecionar usuários para caminhos diferentes com base em suas credenciais de autenticação (usandohtpasswd). Eu consegui configurarProxyPass, que permite o redirecionamento da solicitação para um caminho personalizado, porém todos os usuários agora são redirecionados para o mesmo caminho. Isso acontece devido ao uso da mesma <Location />
diretiva para todos os usuários. Quando tento <Location /user123>
, <Location /user456>
,.. funciona como pretendido, mas gostaria que o Apache encaminhasse o /
local para caminhos apropriados com base nas credenciais fornecidas. Isso é possível?
Responder1
Olhando para o Apache com mod_rewrite. Eu acredito que você poderia fazer algo como o seguinte. A variável remote_user está disponível para o Apache na configuração. Eu acredito que você pode fazer algo como o seguinte.
RewriteCond "%{REMOTE_USER}" "!^$"
RewriteRule "^/(.*)" "/$1/%{REMOTE_USER}" [R]
A condição diz que se o usuário remoto existir com um valor que não seja uma string vazia, reescreva os URLs com um URL remoto. Você também pode fazer uma correspondência de redirecionamento.
RedirectMatch "^/(.*)" "/$1/%{REMOTE_USER}"
Aqui estão minhas referências. Isso mostra as variáveis disponíveis para mod_rewrite https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
Isso mostra exemplos de mod_rewrite em ação https://httpd.apache.org/docs/2.4/rewrite/remapping.html
Responder2
Olhando a questão mais de perto, já que você está usando a instância do Apache para autenticar usando o arquivo htpasswd. Acredito que você possa fazer referência à variável REMOTE_USER.
Eu acredito que você pode usar algo como o seguinte na configuração do Apache.
ProxyPass / http://localhost:8080/%{REMOTE_USER}/
ProxyPassReverse / http://localhost:8080/%{REMOTE_USER}/