O que há de errado com essa configuração do nginx (error_page)?

1

Eu tenho configuração:

server {
        server_name "mysite.ru";
        root "/var/www/mysite/";

        ###
        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
       }



        #Errors
        error_page 400 /errors/index.php?400;
        error_page 403 /errors/index.php?403;
        error_page 404 /errors/index.php?404;
        error_page 500 /errors/index.php?500;

        location = /errors/ {
                root "/var/www/common";
                internal;
        }

}

Mas ainda está mostrando a página de erro nginx 404 padrão.

    
por littleguga 19.12.2015 / 16:49

1 resposta

1

Parece-me que você está tentando executar um script php dentro de uma raiz diferente. Seu local de correspondência exata corresponderá apenas ao URI /errors/ e não /errors/index.php . No entanto, mesmo se ele corresponder ao URI, ele não poderá executar scripts PHP nesse local.

Você precisa replicar suas diretivas fastcgi em qualquer local que seja esperado para executar um script PHP. Por exemplo:

location = /errors/index.php {
    root "/var/www/common";
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    internal;
}
    
por 19.12.2015 / 22:01