Re: error_page не работает
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 не работает
как заставить 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 не работает
взглянул уже. Но это не мой случай. Самое интересное у меня в проде этих 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 не работает
Да пробовал я уже такой вариант. И даже такой пробовал > 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 не работает
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 не работает
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 не работает
Подскажите почему не работает директива 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 не работает
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 не работает
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