fastcgi_intercept_errors on
resolveu o problema
*2037 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
server {
listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name .site.com;
root /var/www/site;
error_page 404 /404.php;
access_log /var/log/nginx/site.access.log;
index index.html index.php;
if ($http_host != "www.site.com") {
rewrite ^ http://www.site.com$request_uri permanent;
}
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 240;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
location ~ /(libraries|setup/frames|setup/libs) {
deny all;
return 404;
}
location ~ ^/uploads/(\d+)/(\d+)/(\d+)/(\d+)/(.*)$ {
alias /var/www/site/images/missing.gif;
#i need to modify this to show only missing files. right now it is showing missing for all the files.
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
access_log off;
expires 20d;
}
location /user_uploads/ {
location ~ .*\.(php)?$
{
deny all;
}
}
location ~ /\.ht {
deny all;
}
}
A configuração do php-fpm é padrão e não é tocada.
O problema é um pouco estranho para mim. Páginas de erro estão mostrando Arquivo não encontrado somente se forem arquivos .php. Outros arquivos de erro estão claramente chamando o arquivo 404.php
site.com/test = > chama 404.php
site.com/test.php = > Arquivo não encontrado.
Estou pesquisando e fazendo alterações. mas não resolveu o problema.
location ~ \.php {
..
try_files $uri =404;
..
}
Adicione isto no bloco de localização php para informar ao nginx para verificar se o arquivo existe antes de enviar qualquer requisição para o FastCGI.