2012-01-11 1 views
0

Я запускаю Squid 2.7 на балансировщик нагрузки и, похоже, хочет сэкономить все, что приходит на ум, включая (и особенно досадно) страницы обслуживания.Страницы обслуживания Nginx и рельсов, получая Squid 2.7, чтобы не кэшировать их, или альтернативы кальмару

Страницы обслуживания обслуживаются с помощью ссылки на страницу ошибок nginx, поэтому я, похоже, не так сильно контролирую их заголовки кеша, я бы просто сказал squid, чтобы не кэшировать не 200 страниц. Есть ли способ сделать это без обновления кальмара? (Я знаю, что новый кальмар имеет способ сопоставления статуса http по правилам acl)

На самой странице уже есть метатеги для кеша, но это, похоже, не помогает кальмару.

Вот немного конфигурации от Nginx, который отправляет страницу ошибки:

location/{ 
    passenger_enabled on; 
    passenger_friendly_error_pages off; 

    recursive_error_pages on; 

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

    error_page 503 @503; 
} 

location @503 { 
    if (-f $request_filename) { 
    return 200; 
    break; 
    } 
    error_page 405 = /system/maintenance.html; 
    rewrite ^(.*)$ /system/maintenance.html break; 
} 

Может быть, есть лучший способ сделать это на Nginx конце, или, может быть каким-то образом, чтобы добавить дополнительный материал на этих страницах ошибок чтобы заставить их вести себя лучше с кальмарами.

Общая идея заключается в том, что если document_root/system/maintenance.html существует, система находится в режиме обслуживания и эта страница должна отображаться для всех запросов (кроме статических файлов, чтобы страница могла ссылаться на таблицы стилей или изображения или еще что-то)

Что касается конца кальмара, у меня на самом деле нет ничего конкретного, чтобы показать его, его довольно сложную настройку резака для кэширования обратного прокси.

На флип-заметке, возможно, есть лучшая альтернатива использованию кальмара, я также открыт для этого предложения.

+0

Какие заголовки Nginx предоставляют обратно Squid на запрос для страницы обслуживания? Кроме того, удостоверились ли вы, что обслуживание действительно (например, метатег управления кешем будет правильно интерпретирован)? – Nick

+0

I * think * so .. его просто простая html-страница .. Просто запустил его через валидатор и заменил его на html41t вместо 5 и удалил один короткий тег, казалось, был невиновен, если кальмару действительно сложно разбираться .. возможно что заставит кальмара проверять его. Действительно ли кальмар по умолчанию просматривает страницы и не кэширует их на основе метатег? Я не могу вдаваться в техническое обслуживание просто для этого, прямо сейчас, чтобы проверить, помогло ли это :( – piotrb

+0

Не могли бы вы опубликовать копии обоих ссылок на страницу [gist] (https://gist.github.com) или где-нибудь похожий? – Nick

ответ

0

Я знаю, что это не то, что вы ищете однако что-то вроде этого гораздо лучше в системе, это служит файлы, то страница обслуживания, если он находится в месте, то возвращается к поддержке сервера

try_files $uri $uri.html /maintenance.html @unicorn_story; 

Это работает достаточно хорошо для нас через кальмаров, но я бы его протестировал.

Вы также можете очистить кальмара после выхода из эксплуатации.

+0

эх .. вау .. 3 года спустя;) вещь у меня на самом деле не имеет никакого отношения к этот проект больше .. о хорошо;) – piotrb