autenticação básica falhando com mod-proxy-fcgi e php7.0-fpm

1

Ubuntu 16.04 LTS em execução na instância do AWS. Apache 2.4.18 / PHP7.0-fpm

O problema é com a autenticação básica. Estou tentando proteger o pw / var / www / html / admin / / . Eu acho que todos os arquivos não-php são protegidos - mas arquivos .php parecem ir direto para o proxy sem aplicar o basic-auth e pedir nome de usuário / senha.

Eu tentei inserir as diretivas de autenticação em .conf e .htaccess. Eu tentei com as tags Directory e Location sem sorte. Eu li que proxy-fcgi não passou cabeçalhos de autenticação e uma sugestão para forçá-los com

SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1

Mas isso não ajudou (e meu problema não é realmente passar pelos creds - é fazê-los perguntados em primeiro lugar.

Aqui está a diretiva de proxy:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://localhost:9000/var/www/html/

Eu tentei expressar a autenticação básica de algumas maneiras ... mas aqui está uma:

    <Directory ~ "/var/www/[^/]+/[^/]+/admin/">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>

Outras coisas que tentei sem sorte:

  • reescrever o cabeçalho auth para garantir permissões adequadas em .htpasswds
    • mude de auth basic para 'deny from all'. Ainda permite arquivos .php
por williamk 22.02.2017 / 19:59

1 resposta

0

Encontrei a solução depois de pesquisar um pouco mais. Graças a uma resposta do Yash neste painel. Segundo ele, o problema é que a diretiva proxypass tem prioridade sobre a diretiva auth e envia o .php para o proxy antes que as credenciais sejam necessárias. A correção é setHandler em uma diretiva filesMatch. Isso funcionou como esperado. (note que alterei a diretiva directorymatch para - mas isso é irrelevante para a questão central).

<DirectoryMatch "/var/www/html/(admin|.+test)">
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
</DirectoryMatch>

<Proxy "fcgi://localhost:9000/" enablereuse=on max=10>
</Proxy>

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://localhost:9000"
</FilesMatch>
    
por 22.02.2017 / 21:51