Welcome! Log In Create A New Profile

Advanced

Re: Вопрос по работе error_page совместно с if и return.

Maxim Dounin
January 09, 2013 07:38AM
Hello!

On Wed, Jan 09, 2013 at 02:26:36PM +0300, Oleg Malaphey wrote:

> Добрый день!
>
> Подскажите пожалуйста, должна ли работать кастомная страница error_page для
> return 40x в блоке if? Если нет, то почему?
>
> Например следующая конфигурация будет отдавать стандартную страницу ошибки
> nginx 403 :
>
> error_page 403 /m/403.html;
>
> if ( $request_uri ~* /.svn/) {
> return 403;
> }

После первого возврата 403 - nginx, в соответствии с error_page,
выполняет внутреннее перенаправление на /m/403.html. Однако при
обработке запроса к /m/403.html снова случается 403 (потому что
опять срабатывает тот же if, ибо $request_uri - это uri исходного
запроса), и возвращается стандартная ошибка (ибо одна попытка
перейти по error_page уже была).

Так что - всё работает, как и должно. Просто происходит то, что
написано, а не то, что имелось в виду.

> А вот конфигурация с использованием location уже отдаст кастомную страницу
> ошибки (/m/403.html):
>
> error_page 403 /m/403.html;
>
> location ~* /.svn/ {
> return 403;
> }

Так и имеет смысл делать. Это заодно решит проблему в проверке
выше - она тривиально обходится с помощью %XX.


--
Maxim Dounin
http://nginx.com/support.html

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Вопрос по работе error_page совместно с if и return.

Oleg Malaphey January 09, 2013 06:28AM

Re: Вопрос по работе error_page совместно с if и return.

Maxim Dounin January 09, 2013 07:38AM

Re: Вопрос по работе error_page совместно с if и return.

Oleg Malaphey January 09, 2013 08:10AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 177
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