404 resposta da página .php nginx + php fpm

1

Acabei de fazer uma nova instalação de um servidor com o nginx com o php5-fpm. Por que, se você visitar uma página do php que não existe, você receberá uma página em branco em vez da página padrão "não encontrada" do nginx? Isso não deveria ser feito pelo servidor nginx como arquivos não php?

CONFIGURAÇÃO

    user www-data;
worker_processes 1;
pid /var/run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

SERVIDOR

   server {
        listen 80 default;
        server_name  216.231.135.56;
        access_log  /var/log/nginx/default.access.log;
        root   /var/www/default/public;

    ## Default location
        location / {
            index index.php;
        }

    ## Images and static content is treated different
        location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
          access_log        off;
          expires           30d;
        }

    ## Parse all .php file in the /var/www directory
        location ~ .php$ {
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_pass   backend;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_param  QUERY_STRING     $query_string;
            fastcgi_param  REQUEST_METHOD   $request_method;
            fastcgi_param  CONTENT_TYPE     $content_type;
            fastcgi_param  CONTENT_LENGTH   $content_length;
            fastcgi_intercept_errors        on;
            fastcgi_ignore_client_abort     off;
            fastcgi_connect_timeout 60;
            fastcgi_send_timeout 180;
            fastcgi_read_timeout 180;
            fastcgi_buffer_size 128k;
            fastcgi_buffers 4 256k;
            fastcgi_busy_buffers_size 256k;
            fastcgi_temp_file_write_size 256k;
        }

    ## Disable viewing .htaccess & .htpassword
        location ~ /\.ht {
            deny  all;
        }
   }



    upstream backend {
            server 127.0.0.1:9000;
    }
    
por Sandro Antonucci 16.09.2011 / 14:45

1 resposta

1

De acordo com o documento fastcgi_intercept_errors , você precisa definir o manipulador error_page para isso. Então, adicione a linha abaixo no contexto location :

error_page 404 /error/404.php;

exibirá a página de erro padrão 404 Not Found ao acessar os arquivos php inexistentes.

Você também dá uma olhada no arquivo de configuração fastcgi_params para evitar duplicação. defina fastcgi_param .

    
por 18.09.2011 / 11:34