nginx + fastCGI для PHP error_page

Я настроил пользовательские страницы ошибок в nginx с fastCGI для PHP следующим образом, и он работает:

root <FOLDER>;
error_page 404 /error.php?404;
location = /error.php {
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass  127.0.0.1:1234;
    root  <FOLDER>;
}

Но поскольку у меня есть один error.php для каждого кода ошибки HTTP, я хотел настроить его в общем виде. Проблема в том, что я не знаю, предоставляет ли nginx код ошибки, который должен быть передан GET в error.php.

Я ищу что-то вроде:

root <FOLDER>;
error_page 500 501 502 401 402 403 404 /error.php?NGINX_ERROR_CODE;
location = /error.php {
    include /etc/nginx/fastcgi.conf;
    fastcgi_pass  127.0.0.1:1234;
    root  <FOLDER>;
}

Проблема в том, что NGINX_ERROR_CODE я не знаю, предоставляет ли он такую ​​вещь для настройки общего обработчика error_page.

Это как-нибудь?


person StormByte    schedule 24.05.2012    source источник


Ответы (1)


Погуглил, сначала не оказалось, что для этого есть var.

Однако вы можете установить несколько директив страницы ошибок.

error_page 401 /error.php?e=401;
error_page 402 /error.php?e=402;
error_page 403 /error.php?e=403;
error_page 404 /error.php?e=404;
error_page 500 501 502 /error.php?e=50x;

и так далее.

person damianb    schedule 24.05.2012
comment
Да, это то, чем я сейчас занимаюсь. Просто хотел знать, можно ли это упростить :( Потому что при этом простое изменение потребует большого количества изменений конфигурации, которых я хочу избежать :( - person StormByte; 24.05.2012
comment
Увы, это кажется мне неизбежным. Если вы хотите легко изменить имя файла, вы можете попробовать установить его как переменную с set $foo bar - возможно, что-то вроде set $errorpage error.php?e= подойдет лучше всего. - person damianb; 24.05.2012