Apache VirtualHost - por usuário ProxyPass

Apache VirtualHost - por usuário ProxyPass

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}/

informação relacionada