Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Сообщаем о ремонтных рабо тах на сервере
- To: nginx-ru@xxxxxxxxx
- Subject: Сообщаем о ремонтных рабо тах на сервере
- From: Gena Makhomed <gmm@xxxxxxxxx>
- Date: Sun, 05 Sep 2010 18:27:18 +0300
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csdoc.com; s=dkim; t=1283700438; bh=xbhJA17V/2mebouudRO5dJRuJoYl/sMCfmMsuXPsR4o=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type:Content-Transfer-Encoding; b=cEn0utH+tJ7OYvWwt3Dv/g3F TL6EGX5jvPHCsC2mk5QmlPOJ3xd1XLDFg7PdIgDNV8wnVQw96xTSQL6xWs+pn1H352y X6QEQsECcFNheuxRbB6W1JV9Xz7d85lv8hJuHGBDOlG62LBGORH4gtgnqRA+huVaoKN SqzRAJbG/1cSA=
на хабре появилась статья http://habrahabr.ru/blogs/webdev/103406/
с описанием недостатков приведенного в документации nginx способа
location / {
try_files /system/maintenance.html
$uri $uri/index.html $uri.html
@mongrel;
}
вместо
HTTP/1.1 503 Service Unavailable
Retry-After: 3600
этот фрагмент конфига приводит к тому, что возвращается
HTTP/1.1 200 OK
что создает неприятные побочные эффекты с поисковыми машинами.
это уже вторая проблема с методом try_files /system/maintenance.html
первая обсуждалась в теме "Можно ли боротся с кэшэм страницы-заглушки?"
там была проблема в том, что для этой страницы надо как-то выставить
заголовок "Cache-Control: no-cache", сейчас - проблема в том,
что надо выставить 503 статус и заголовок "Retry-After: 3600".
предлагаемый вариант решения этих и других проблем с файлами-заглушками:
если в директиве try_files указано имя файла, которое не содержит
переменных - значит это файл-заглушка, и в случае существования
этого файла - искать location = c этим именем файла, и если такой
location обнаружен - сделать в него internal redirect. если такой
location не обнаружен - действовать как и раньше, просто отдать
этот файл с HTTP/1.1 200 OK и дефлтовыми заголовками.
пример конфига:
location / {
try_files /system/maintenance.html $uri $uri/ @default;
}
location = /system/maintenance.html {
add_header Cache-Control no-cache;
add_header Retry-After 3600;
error_page 503 = /503.html;
return 503;
internal;
}
преимущества:
* полная обратная совместимость с существующими конфигурациями nginx
* решение всех известных на сегодня проблем со страницами-заглушками
* сайт может переводиться в/из maintenance mode c помощью touch и rm
P.S. потребуется также внести изменения в ngx_http_headers_module,
чтобы с помощью директивы add_header можно было добавлять заголовки
Cache-Control и Retry-After к ответам с 503 статусом.
--
Best regards,
Gena
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|