Satisfy any
faz exatamente o que diz: permite o acesso com base no controle de acesso à autenticação ou .
Como você permite o primeiro no bloco Proxy e o último no bloco Location, a autenticação nunca é necessária.
Estou tentando configurar o apache como um front-end de autenticação para um back-end da Web em execução na porta 8080. O back-end não tem autenticação, portanto, se você curl localhost:8080
obtiver o site. A porta 8080 está bloqueada externamente, então o que eu quero é que o apache autentique um usuário acessando a partir da porta 80 e, em seguida, o proxy para a porta 8080.
Acredito que isso seja possível, de acordo com este post no stackoverflow: link
Eu tentei replicar isso, no entanto, não consigo autenticar o Apache; apenas passa diretamente para o proxy. Aqui está a configuração do host virtual:
<VirtualHost *:80>
ServerName external.mywebsite.com
<Location "/">
Satisfy any
require valid-user
order allow,deny
Allow from all
</Location>
ProxyRequests off
ProxyPreserveHost on
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
<Proxy *>
Order deny,allow
Allow from all
AuthType Basic
AuthName "Private"
AuthBasicProvider file
AuthUserFile /path/to/htpasswd
Require valid-user
</Proxy>
</VirtualHost>
Isso funciona tanto quanto a navegação para external.mydomain.com saídas do backend. Portanto, o próprio proxy está funcionando, mas é como se as diretivas Auth estivessem sendo ignoradas. Eu também tentei mover as diretivas Auth para o bloco <location>
, mas isso tem exatamente o mesmo efeito.
Estou usando o Apache2 v2.2.22 rodando no Ubuntu 12.04. Alguma sugestão?
Tags apache-2.2 mod-proxy mod-auth