ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

error_page + return + arg_XXX


  • To: nginx-ru@xxxxxxxxx
  • Subject: error_page + return + arg_XXX
  • From: "TheRoSS" <nginx-forum@xxxxxxxx>
  • Date: Sat, 5 May 2012 11:41:32 -0400 (EDT)
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tigger.jlkhosting.com; s=x; h=From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To:Date; bh=ehIncNJ+vcK/J6Z0YLhQCp/hNAwqnUCvb93unkxVtB0=; b=uL6fLbs/HsRvhSrpm+lPN8sPfCdNjoWQcZIxIyu9/D3WXcatKDKBVeuCDEpPm2IIINPHQRUWN4Qnfz/jTm+opsKuQ+BFYzhg4XysnZIT77acOpijvgafU/Musuh0FlA4;

Всем доброго!

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

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
Это как-нибудь возможно сделать?

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,226090,226090#msg-226090

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.