Re: Изменить код ошибки на deny all
Ruslan Ermilov
ru на nginx.com
Вт Июл 10 10:19:18 UTC 2012
On Tue, Jul 10, 2012 at 03:20:08PM +0600, Nick Knutov wrote:
> На уровене http есть блок allow ip/mask, после чего deny all;
> Это временное решение под ддосом, но при этом хочется, чтобы по факту
> deny all отдавался не error 403, а 503, чтобы страницы не выпали из
> яндекса. Как это можно сделать?
>
> Очевидное
> error_page 403 =503 /error403.html; # на уровне http
> почему-то не помогает:
Видимо для /error403.html действует то же самое deny all, в результате
статус ответа не может быть изменён на 503. Нужно для /error403.html
либо разрешить доступ, либо воспользоваться вариантом error_page c `='
(см. ниже).
> wget -S -O - http://***.***/
> --15:12:27-- http://***.***/
> => `-'
> Resolving ***.***... 88.198.19.82
> Connecting to ***.***|88.198.19.82|:80... connected.
> HTTP request sent, awaiting response...
> HTTP/1.1 403 Forbidden
> Server: nginx/1.2.0
> Date: Tue, 10 Jul 2012 09:12:27 GMT
> Content-Type: text/html
> Content-Length: 168
> Connection: keep-alive
> Keep-Alive: timeout=20
> 15:12:27 ERROR 403: Forbidden.
>
> Заодним, кстати, хорошо было бы и Keep-Alive отключить для 503 и вообще
> сразу закрывать соединение, но смотрю в документацию и не вижу как.
keepalive отключается теми же директивами, что и включается:
http://nginx.org/r/keepalive_disable/ru
http://nginx.org/r/keepalive_requests/ru
http://nginx.org/r/keepalive_timeout/ru
http {
server {
keepalive_timeout 75 75;
allow 127.0.0.1;
deny all;
error_page 403 = @403;
location @403 {
keepalive_timeout 0;
return 503;
}
}
}
Подробная информация о списке рассылки nginx-ru