ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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


 




Copyright © Lexa Software, 1996-2009.