conforme declarado acima, o uri não está sendo passado para o nginx. Incluí todo o bloco "try" para mostrar isso.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
set $page_to_view "/index.php";
try_files $uri $uri.php $uri/;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
Então, está essencialmente dizendo "ah, ei, fizemos $uri.php e esse arquivo existe, vamos servi-lo em vez de enviá-lo para php."
e minha parte fpm está abaixo.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Praticamente estoque. Então, o que não entendo é por que o nginx não está mais fazendo isso. Eu sei que estava funcionando com fastcgi no debian, mas agora não está, e perdi meu arquivo de configuração antigo devido a uma falha no disco rígido e é o único arquivo que não fiz backup antes de enviar a unidade de volta como pensei que seria. perfeitamente AOK para reescrevê-lo.
Responder1
Você não diz qual URI está tentando carregar, mas presumo que não termina em .php
.
Seu problema aqui é que você não está interpretando a try_files
diretiva literalmente, como o nome indica. É especificamente tentar umarquivo.Está documentado como try_files file ... uri;
significando que apenas o último argumento será tratado como um substituto, causando uma reescrita interna. Qualquer argumento antes do último é testado como um arquivo estático e, se encontrado, é servido como um arquivo estático.
Isso significa que você pode fazer try_files $uri $uri/ $uri.php;
, mas não pode fazertry_files $uri $uri.php $uri/
Responder2
tente substituir
location ~ \.php$ {
com
location ~ \.php {
e $document_root com o diretório real onde o arquivo php é colocado
por ex.
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;