No nginx, todas as configurações específicas do site são incluídas em um bloco server
e os blocos location
são usados para adicionar diretivas de configuração diferentes para URLs particulares.
Em geral, a filosofia é bem diferente do Apache2, então você precisa estudá-la para entender como fazer uma configuração similar com ela.
No seu caso, as diretivas de configuração do nginx podem ser algo como isto:
location / {
try_files $uri $uri/ /index.php?rt=$request_uri;
}
location ~ \.php$ {
deny all;
}
location ^~ /index.php {
# include here the configuration items from nginx default location ~ \.php$ block
}
location ^~ /files {
# include here either PHP configuration directives from location ~ \.php$ block if you want PHP scripts executed from here. If you do not want PHP scripts to be executed, then use
allow all;
}
Essas diretivas estão incluídas na configuração principal do nginx ou na configuração específica do site que existe no diretório /etc/nginx/sites-available
.
Algumas explicações sobre os blocos:
O primeiro bloco location
é a implementação padrão do controlador frontal no nginx. Isso significa que o nginx primeiro verifica se o arquivo requerido é encontrado em algum lugar no servidor, se ele existe. Caso contrário, ele envia a solicitação para index.php
, com a parte original do pedido URI como um argumento para ?rt
. Isso é um pouco diferente de sua implementação, pois você usa um regex para limitar os possíveis URIs passados como argumento.
O segundo bloco location
rejeita o acesso a todos os URIs que terminam com .php $.
O terceiro bloco adiciona uma exceção para index.php
, que é processada usando o backend do PHP.
O quarto bloco envia solicitações de script PHP para o backend do PHP ou simplesmente permite enviá-las ao usuário.
Como aviso de isenção de responsabilidade, não posso testar essas regras, pois não conheço seu ambiente de software, portanto, elas podem não atender aos seus requisitos ou podem falhar em algumas partes.