Gostaria de modificar um location
bloco Nginx existente para fornecer um status HTTP 403 a qualquer arquivo PHP no .well-known
diretório e seus subdiretórios. Estou usando .well-known
para fins legítimos, mas um comprometimento recente do servidor mostrou que preciso ser muito mais rigoroso quanto ao que é permitido.
Meu bloco Nginx atual location
é:
location ^~ /.well-known/ {
allow all;
default_type "text/plain";
root /var/www/example.com/_well-known/;
try_files $uri/ $uri =404;
}
Está root
deliberadamente fora do diretório HTML público (que está em /var/www/example.com/live/
se for relevante).
Como posso modificar este bloco ou fornecer um location
bloco adicional para servir HTTP 403 a todas as solicitações de arquivo PHP no .well-known
diretório?
Obrigado.
Você precisa de um bloco de localização de expressão regular para corresponder aos URLs que terminam com
.php
.O
^~
operador no bloco de localização atual significa que este novo bloco de localização de expressão regular deve ser aninhado no bloco existente.Por exemplo:
Qualquer URL que comece
/.well-known/
e termine com.php
resultará em um status 403.Você poderia usar nested
location
s assim:... embora a documentação sugira que isso falhe:
Outra opção seria remover o
^~
modificador e adicionar um local de regex que corresponda.php
em/.well-known/
.Para modificar sua configuração Nginx existente para fornecer um status HTTP 403 a qualquer arquivo PHP no diretório .well-known e seus subdiretórios, você pode adicionar um bloco de localização adicional dentro do existente para lidar especificamente com arquivos PHP. Aqui está a configuração atualizada: