ПРОЕКТЫ 


  АРХИВ 


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]

Re: Сообщаем о ремонтных ра ботах на сервере



Добавлять Cache-Control смысла не вижу - я не знаю кем нужно быть,
чтобы сконфигурировать свой кеш или своего бота на хранение non-2xx
результатов.

А в остальном мы делаем вот так:

------------------------------------------------------------------------------------
# 503 -> static for POSTs could cause 405
recursive_error_pages on;

if (-f $document_root/system/maintenance.html) {
    return 503;
}

error_page 503 @503;
location @503 {
    error_page 405 = /system/maintenance.html;

    # Serve static assets if found.
    if (-f $request_filename) {
        break;
    }

    if (-f $document_root/system/maintenance.html) {
        rewrite ^(.*)$ /system/maintenance.html break;
    }

    rewrite ^(.*)$ /503.html break;
}
------------------------------------------------------------------------------------


2010/9/5 Gena Makhomed <gmm@xxxxxxxxx>:
>
> на хабре появилась статья 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 статусом.

-- 
Alexey Kovyrin
http://kovyrin.net/
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.