Re: error_page не работает

2016-03-19 Пенетрантность Maxim Dounin
Hello!

On Fri, Mar 18, 2016 at 03:07:34PM +0300, Иван Мишин wrote:

> взглянул уже. Но это не мой случай. Самое интересное у меня в проде этих
> error_page крутится целое множество. А на тестовом стенде не работает и все
> тут.

А как это может быть не ваш случай, если _все_ запросы у вас 
отправляются на бекенд?

> > >  location / {
> > > proxy_pass http://local;
> > > error_page 404 /404e.html;
> > > }

С такой конфигурацией сам nginx вернуть 404 не может, может только 
передать клиенту то, что сказал бекенд.  И если флаг 
proxy_intercept_errors не включён - то и директива error_page 
смысла не имеет.

-- 
Maxim Dounin
http://nginx.org/

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

Re: error_page не работает

2016-03-19 Пенетрантность Иван Мишин
как заставить nginx отдавать 444 самому? так:
>
>  server {
> listen 80;
> server_name php-info.club;
> access_log /var/log/nginx/php-info.club_access.log main;
>error_log /var/log/nginx/php-info.club_error.log error;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> error_page 404 /404e.html;
>  location / {
> proxy_pass http://local;
> }
> location = /404e.html {
> return 444;
> }
> }


18 марта 2016 г., 17:25 пользователь Maxim Dounin 
написал:

> Hello!
>
> On Fri, Mar 18, 2016 at 03:07:34PM +0300, Иван Мишин wrote:
>
> > взглянул уже. Но это не мой случай. Самое интересное у меня в проде этих
> > error_page крутится целое множество. А на тестовом стенде не работает и
> все
> > тут.
>
> А как это может быть не ваш случай, если _все_ запросы у вас
> отправляются на бекенд?
>
> > > >  location / {
> > > > proxy_pass http://local;
> > > > error_page 404 /404e.html;
> > > > }
>
> С такой конфигурацией сам nginx вернуть 404 не может, может только
> передать клиенту то, что сказал бекенд.  И если флаг
> proxy_intercept_errors не включён - то и директива error_page
> смысла не имеет.
>
> --
> Maxim Dounin
> http://nginx.org/
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: error_page не работает

2016-03-19 Пенетрантность Иван Мишин
взглянул уже. Но это не мой случай. Самое интересное у меня в проде этих
error_page крутится целое множество. А на тестовом стенде не работает и все
тут.

2016-03-18 15:06 GMT+03:00 Sergey Kandaurov :

> On Mar 18, 2016, at 3:00 PM, Иван Мишин  wrote:
> > Подскажите почему не работает директива error_page? Конфиг вроде верный.
> >  server {
> > listen 80;
> > server_name php-info.club;
> > access_log /var/log/nginx/php-info.club_access.log main;
> >error_log /var/log/nginx/php-info.club_error.log error;
> > proxy_set_header Host $host;
> > proxy_set_header X-Real-IP $remote_addr;
> > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> >  location / {
> > proxy_pass http://local;
> > error_page 404 /404e.html;
> > }
> > location = /404e.html {
> > return 444;
> > }
> > }
>
> Попробуйте взглянуть в сторону proxy_intercept_errors.
>
> --
> Sergey Kandaurov
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: error_page не работает

2016-03-19 Пенетрантность Иван Мишин
Да пробовал я уже такой вариант.
И даже такой пробовал

> if ($status = 404) {
> return 444;
> }

Не работает и все тут.

18 марта 2016 г., 15:35 пользователь Sergey Kandaurov 
написал:

> On Mar 18, 2016, at 3:07 PM, Иван Мишин  wrote:
> > взглянул уже. Но это не мой случай. Самое интересное у меня в проде этих
> error_page крутится целое множество. А на тестовом стенде не работает и все
> тут.
> >
>
> Видимо, клиенту по прежнему уходит 404-й код (со всеми заголовками).
>
> : Кроме того, можно поменять код ответа на другой,
> : используя синтаксис вида “=ответ”
>
> См. http://nginx.org/r/error_page/ru.
>
> [..context lost to top posting]
>
> --
> Sergey Kandaurov
>
> ___
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
>
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: error_page не работает

2016-03-19 Пенетрантность Sergey Kandaurov
On Mar 18, 2016, at 3:00 PM, Иван Мишин  wrote:
> Подскажите почему не работает директива error_page? Конфиг вроде верный. 
>  server {
> listen 80;
> server_name php-info.club;
> access_log /var/log/nginx/php-info.club_access.log main;
>error_log /var/log/nginx/php-info.club_error.log error;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>  location / {
> proxy_pass http://local;
> error_page 404 /404e.html;
> }
> location = /404e.html {
> return 444;
> }
> }

Попробуйте взглянуть в сторону proxy_intercept_errors.

-- 
Sergey Kandaurov

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

Re: error_page не работает

2016-03-19 Пенетрантность Валентин Бартенев
On Friday 18 March 2016 18:08:38 Иван Мишин wrote:
> как заставить nginx отдавать 444 самому? так:
> >
> >  server {
> > listen 80;
> > server_name php-info.club;
> > access_log /var/log/nginx/php-info.club_access.log main;
> >error_log /var/log/nginx/php-info.club_error.log error;
> > proxy_set_header Host $host;
> > proxy_set_header X-Real-IP $remote_addr;
> > proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> > error_page 404 /404e.html;
> >  location / {
> > proxy_pass http://local;
> > }
> > location = /404e.html {
> > return 444;
> > }
> > }
> 
> 
[..]

Необходимо разрешить перехватывать 404 от бекенда.  Это делается с помощью
директивы:

  proxy_intercept_errors on;

--
Валентин Бартенев
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

error_page не работает

2016-03-19 Пенетрантность Иван Мишин
Подскажите почему не работает директива error_page? Конфиг вроде верный.

>  server {
> listen 80;
> server_name php-info.club;
> access_log /var/log/nginx/php-info.club_access.log main;
>error_log /var/log/nginx/php-info.club_error.log error;
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
>  location / {
> proxy_pass http://local;
> error_page 404 /404e.html;
> }
> location = /404e.html {
> return 444;
> }
> }
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Re: error_page не работает

2016-03-19 Пенетрантность Sergey Kandaurov
On Mar 18, 2016, at 3:07 PM, Иван Мишин  wrote:
> взглянул уже. Но это не мой случай. Самое интересное у меня в проде этих 
> error_page крутится целое множество. А на тестовом стенде не работает и все 
> тут.
> 

Видимо, клиенту по прежнему уходит 404-й код (со всеми заголовками).

: Кроме того, можно поменять код ответа на другой,
: используя синтаксис вида “=ответ”

См. http://nginx.org/r/error_page/ru.

[..context lost to top posting]

-- 
Sergey Kandaurov

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

Re: error_page не работает

2016-03-18 Пенетрантность Maxim Dounin
Hello!

On Fri, Mar 18, 2016 at 06:08:38PM +0300, Иван Мишин wrote:

> как заставить nginx отдавать 444 самому? так:

Отдавать в каких случаях?  Если всегда, то проще всего так:

location / {
return 444;
}

Если тогда, когда бекенд вернул 404 - то надо использовать 
proxy_intercept_errors, как вам и было сказано в первом же ответе.  
Как-то так:

location / {
proxy_pass http://backend;
proxy_intercept_errors on;
error_page 404 = /404.html;
}

location = /404.html {
return 444;
}

Подробнее тут и по ссылкам:

http://nginx.org/r/proxy_intercept_errors/ru

-- 
Maxim Dounin
http://nginx.org/

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