Eu tenho a configuração do Apache / PHP exatamente assim: link
Inclui a regra ProxyPassMatch
, conforme mencionado:
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/path/to/files/$1
Isso envia todas as solicitações com .php
para um proxy e, finalmente, atende o PHP bem.
No entanto, tenho tentado fazer algum controle de acesso e o proxy parece ter precedência. Minha estrutura de pastas é assim:
/ <-- PHP files
/extra/ <-- PHP files
/css/
/img/
Deve haver acesso aos arquivos PHP no diretório raiz, mas desejo restringir o acesso ao extra
dir. Eu adicionei estas linhas à minha configuração principal:
<Directory "/extra">
Order deny,allow
Deny from all
</Directory>
Mas os arquivos PHP ainda são executados ... Quando eu coloco um tipo diferente de arquivo na pasta, ele é bloqueado com sucesso, então a diretiva funciona. Eu estou supondo que a regra ProxyPassMatch
está proibindo que ele trabalhe para arquivos PHP.
Eu tentei algumas coisas, como colocar a regra ProxyPassMatch
dentro de um bloco <Directory>
(não funciona, porque você não pode usar ProxyPassMatch
dentro de tais blocos) e substituir ProxyPassMatch
por RewriteRule
com o sinal [P]
(semelhante a este: Apache 2.4 + PHP-FPM + ProxyPassMatch , mas não obteve proxy).
Minha pergunta é quase exatamente a mesma que esta: link . No entanto, não obteve uma resposta definitiva.
O que me confunde é que você precisa ter a regra de proxy no lugar, mas quando você a coloca, nada mais importa (o .htaccess também não funciona mais). Além disso, isso levanta questões sobre segurança. Tudo com .php
permanece inalterado pelas minhas provisões de acesso e passa direto para os internos do sistema. Como posso combinar o PHP-FPM com regras de segurança adequadas no Apache?