nginx кеширование

Валентин Росавицкий valintinr at tangramltd.com
Wed Apr 17 18:48:01 UTC 2013


Здравствуйте.
Имеется следующая конфигурация : nginx + php-fpm + drupal.
Сайт с включенным модулем boost (кеширование для анонимов). После сброса 
кеша появляется 502 ошибка,
в этот момент модуль активно пишет в базу, грузит диск вплотную. Сам 
сервер по конфигурации неплох,
зеркало на сас дисках, 32Г памяти, 2 х E5645 (для одного сайта с 100-200 
онлайна) но в этот момент просто
вешает диски, думаю это не исправить (да и не мне это делать). 
Интересует возможность отдавать с кеша (не boost) страницу.
Раньше сайт вертелся на nginx+apache и это решалось через 
proxy_cache_use_stale для fastcgi так не пройдет.
Таймауты для nginx и php стоят большие. Немного конфигов:

         # serve imagecache files directly or redirect to drupal if they 
do not exist
         location ^~ /sites/default/files/imagecache/ {
         access_log off;
         expires 30d;
         try_files $uri @rewrite;
         }

         location ~ \.php$ {
         try_files $uri @cache;
         fastcgi_pass   php5-fpm; .....}


         location / {
         try_files $uri @cache;
         }

         location @cache {
         if ($query_string ~ ".+") {
             return 405;
         }
         if ($cookie_DRUPAL_UID) {
             return 405;
         }
         if ($request_method !~ ^(GET|HEAD)$) {
             return 405;
         }
         error_page 405 = @rewrite;

         add_header Expires "Sun, 19 Nov 1978 05:00:00 GMT";
         add_header Cache-Control "no-store, no-cache, must-revalidate, 
post-check=0, pre-check=0";

         try_files /cache/normal/$host/${uri}_.html 
/cache/perm/$host/${uri}_.css /cache/perm/$host/${uri}_.js
         /cache/$host/0$uri.html /cache/$host/0${uri}/index.html @rewrite;
         }


         location @rewrite {
         rewrite ^/(.*)$ /index.php?q=$1 last;
         }

         error_page 502 =301 @cache;



Подробная информация о списке рассылки nginx-ru