Solicitações de processamento
A regra básica a ser lembrada é: o nginx atende a uma solicitação com um local (você pode enfatizar ainda mais: e apenas um local ) .
Leia: link
location
correspondência
Leia: location
documentação
Com base em sua configuração, o nginx fará a correspondência inicial no local /blog
prefix e, em seguida, no local \.php$
regex e, eventualmente, exibirá a solicitação com o último. Com a configuração que você forneceu, o script não deve mais ser baixado como um arquivo raw, mas deve ser enviado ao PHP.
No entanto, isso não significa que sua configuração esteja correta: a solicitação não é atendida pela sua localização /blog
, que é inútil no momento.
- É uma boa prática geral evitar a filtragem de solicitações com locais de regex, que são baseadas em ordem, o que é ruim (lembre-se do pesadelo da sensibilidade da ordem das diretivas do Apache?). Para filtrar, use os locais de prefixo, que são baseados em correspondência mais longa. Você pode incorporar locais entre si se você precisar de um regex.
- Por que não colocar diretamente suas diretivas
fastcgi*
no local /blog
? Então, em vez de usar a variável $fastcgi_script_name
(adivinhada da correspondência location
que seriam variantes de /blog
aqui), você poderia usar fastcgi_param SCRIPT_FILENAME $document_root/data/core/blog.php
. By the way, $fastcgi_script_filename
já continha o início /
, não há necessidade de adicionar um entre as variáveis
- Evite usar redirecionamentos se puder evitá-los. Evite especialmente
rewrite
ainda mais. Os redirecionamentos simples de usuários (reescrita de URL feita por meio de notificações de redirecionamento enviadas ao cliente com códigos de status HTTP) podem ser feitos com return
. O que você fez aqui foi um redirecionamento interno (feito localmente no servidor): seu único uso era alterar o URI usado para o parâmetro SCRIPT_FILENAME
.
Você pode usar para começar:
location /blog {
fastcgi_pass 127.0.0.1:9054;
fastcgi_param SCRIPT_FILENAME $document_root/data/core/blog.php;
include fastcgi_params;
# Useless here since SCRIPT_FILENAME will never be a directory indeed
fastcgi_index index.php;
location /blog/post {
fastcgi_pass 127.0.0.1:9054;
fastcgi_param SCRIPT_FILENAME $document_root/data/core/blogpost.php;
include fastcgi_params;
}
}