Welcome! Log In Create A New Profile

Advanced

error_page + return + arg_XXX

May 05, 2012 11:41AM
Всем доброго!

Обнаружил следующее странное поведение. Возможно так и должно быть, но мне это показалось странным.
Мой конфиг:

server {
...
error_page 400 401 402 403 404 500 501 502 503 504 505 @null_banner;

location = / {
return 404;
}

location @null_banner {
return 200 '<html><body>ERROR!!!! Я - нулевой баннер!</body></html>';
}
}

При заходе на страницу / запрос перенаправляется на 404, 404 подхватывается директивой error_page, которая в свою очередь перенаправляет его на @null_banner. В результате я имею на выходе свой текст ('<html><body>ERROR!!!!</body></html>'), но при этом HTTP статус не ожидаемый мной 200, а статус ошибки, т.е. 404.
Разве return 200 '...' не должен был вернуть 200?
Если задано 'error_page ... =200 @null_banner;', то на выходе 200.

Вообще, я пытаюсь решить следующие задачи:

1. Основная.
Если при обработке запроса произошла какая бы то ни было ошибка, всегда должен выдаваться ответ 200 и нулевой баннер, с чем вполне успешно справляется моя конфигурация при условии задания =200 в error_page.
Но нужно теперь сделать так, чтобы если в запросе передаётся параметр debug=1, выдавался не нулевой баннер с кодом 200, а именно код ошибки.
То есть при запросе 'http://localhost/' на выходе 200 и нулевой, а при запросе 'http://localhost/?debug=1' на выходе должно быть 404 Not Found.
Как это можно сделать?

2. Желательная.
При попадении на нулевой баннер в его тексте хотелось бы получить настоящий код возврата. То есть чтобы можно было написать что-то вроде:
location @null_banner {
return 200 '<html><body>ERROR: http status = $status Я - нулевой баннер!</body></html>';
}
где в $status будет лежать тот самый 404
Это как-нибудь возможно сделать?
Subject Author Posted

error_page + return + arg_XXX

TheRoSS May 05, 2012 11:41AM

Re: error_page + return + arg_XXX

Maxim Dounin May 05, 2012 03:54PM

Re: error_page + return + arg_XXX

TheRoSS May 18, 2012 07:53AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 267
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready