nginx + php fpm - 404 páginas php - arquivo não encontrado

2
*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.

    
por Mahesh 20.10.2013 / 22:26

2 respostas

2
fastcgi_intercept_errors on

resolveu o problema

    
por 20.10.2013 / 23:12
0
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.

    
por 12.09.2017 / 04:36

Tags