Как стать автором
Обновить

Комментарии 38

Познавательно, спасибо.
Спасибо.

Интересно узнать еще чей-либо опыт по данной теме.
Спасибо за статью, но описания Varnish и Pressflow лучше перевести.
Это их официальное описание, не нашел почему-то кнопки quote в редакторе хабровском.
Хабраюзер, наверное имеет ввиду, что было бы хорошо, если бы вы не официальное описание вставили, а перевод. Английский до сих пор не все знают хорошо…
Извиняюсь за недопонимание, в английском языке «провожу» времени больше, чем в русском. Переведу контент.
[blockquote]
текст цитаты
[/blockquote]

Только скобки угловые поставьте.
Комментарии в конфигах наверное лучше убрать.
Спасибо за статью!
Не-не-не, лучше все это оставить, если бы не комменты, и любая доп-инфа, незнающим (как и мне до момента, когда все это заработало), было бы очень тяжело разобраться.
а они не стандартные?
Какие-бы они не были, это комменты — суть их помочь и объяснить. Аминь :)
Просто коммент в 9 строк немного мозолит глаза :)
Ну да ладно. Вы автор — Вам виднее. В любом случае плюс за статью.
Советую varnish заменить на squid (последний рвёт предпоследнего как тузик грелку), а apache/mod_php на php-fpm, кстати в случае последнего можно на nginx включать fastcgi-кэширование.

А вот сюда:
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /home/pathto/drupal613;
access_log /home/httpd-logs/mysite.com.access.log;
error_page 404 = @fallback;
}

надо добавить что-нибудь вроде expires max; чтобы не раздавать закешированные у клиента картинки, а отдавать HTTP 301, да и access_log не особо нужен статике + полезно html/xml/js/css etc гзиппить nginx'ом, а не php (как происходит при выставлении соотв. галочек в друпале).

gzip on;
gzip_min_length 1000;
gzip_comp_level 5;
gzip_types text/plain text/html text/xml application/xml application/x-javascript text/javascript text/css text/json;
gzip_disable «msie6»;
gzip_proxied any;

Во, за этот коммент отдельное спасибо!

Есть ресурсы с подробной сравнительной характеристикой varnish и squid?
Дык, вроде тут где то и проскакивало стрессовое сравнение, если не ошибаюсь. + в википедии в качестве фронт-енда squid, что символизирует ;)

и ещё добавлю — в плане раздачи статики надо ещё смотреть в сторону дискового AIO на nginx, да и squid его тоже поддерживает, а к пхп надо прикручивать что-нибудь в духе APC/XCache/eAccelerator, а со сторону Drupal модуль cache_router.
Но зато Друпал собирает все css и все js в два файла, вместо, скажем 15. Если компрессированный файл обновился, то надо пропускать запрос к нему через Apache. Поэтому надо как-то изящно решать проблему, описанную тут.
Ошибался. Всё уже работает как надо, ситуацию для незакомпрессированных ранее файлов в представленном конфиге спасает error_page 404 = @fallback;
А данный конфиг Варниша подойдет для стандартного Друпала?
Кстати, в чем конкретно отличия Pressflov с вашей точки зрения? Насколько он быстрее стандартного Друпала?
Varnish без Pressflow не пробовал, не могу точно сказать, но по-идее реально, ведь это просто система кеширования контента отдаваемого пользователю.

По поводу отличий Pressflow от стандартного Друпал можно почитать у них на сайте, но суть его в том, что работа с базой данных, некоторыми структурами данных полностью переработана для ускорения работы системы в целом.
Если есть nginx, почему бы не использовать его кеширование вместо Varnish'а? Чем Varnish вообще лучше в этом случае?
Давно думаю насчет Varnish, но пока не могу себя убедить, нужно стороннее мнение :)
Варниш более гибок в плане настроек кеширования(VCL) + возможность использования ESI
Убери IP из последнего примера конфига nginx в пункте 3
; )
Не могли бы вы объяснить чем решение Varnish+Nginx+Apache + mod_php лучше чем Nginx+fast_cgi php

LoadImpact.com ломится «незарегистрированными» пользователями. Сайт на друпале благодаря всей описанной выше кухне с помощью кеширования выраждается в раздачу статики. Зачем тогда городить огород — nginx прекрасно сам закеширует ответ fastcgi и будет на раздаче этого кеша показывать отличное время.

Складывается ощущение, что вы просто услышали где-то, что «Varnish это оч круто», поставили его и он показал какие-то результаты, которыми вы и поспешили поделиться со всеми. Но есть ли прирост по сравнению с правильной (не тонкой, просто «правильной») настройкой nginx. Я, если честно, сильно сомневаюсь.
Буду благодарен за пост с описанием правильной настройки Nginx+fast_cgi php под Drupal с соотношением 80 к 20 анонимных к залогиненым пользователям и трафиком от 10000 и более хостов в сутки.
Присоединяюсь. Получается что:

Varnish (proxy) + nginx (proxy web server) + apache (web server) + mod_php

Из этой цепочки можно легко исключить два звена и оставить:

nginx (proxy web server) + fcgi php

и сэкономить памяти как минимум, которую можно использовать под memcache например.
А нет вероятности, что на таком трафике не хватит памяти для корректной работы fcgi php?

Было бы очень приятно увидеть подобный мануал для корректной настройки.
Давно хочу написать но все никак не соберусь.

Кстати используете APC для PHP?
Я сейчас пробую eAcc использовать, вроди как вполне отлично ускоряет работу PHP.
А для Joomla есть что-то аналогичное?
Varnish это ключевое ПО для ускорения Вашего сайта.

Varnish — это Open Source ПО, стандартизированное и требующее незначительных ресурсов.

Как то не очень понятно зачем же этот варниш всё же нужен
<пре>
Status: "} obj.status {"
Response: "} obj.response {"
XID: "} req.xid {"
</пре>
<адресс><ссылка href="http://www.varnish-cache.org/">Varnish</ссылка></адресс>

ой
Не ругайтесь :) HTML'ину всю эту хабр пытался показать, вот и пришлось поправить :)
Перед вашим правилом для отдачи картинок, надо добавить что-то подобное:

location ^~ /sites/default/files/imagecache/ { 
  index index.php index.html; 
  if (!-e $request_filename) { 
    rewrite ^/(.*)$ /index.php?q=$1 last; 
    break; 
  } 
}

Иначе популярный модуль Imagecache работать не будет. В плане, не будут генериться новые превьюшки при первом обращении по соответствующему url`у. Возможно вы или кто-то ещё из экспертов по nginx`у подскажут, как решить такую проблему: если файл уже имеется, то отдавать его nginx`ом, а если файла нет, то не возвращать 404-й еррор, а передавать запрос на обработку Apache. Правило, которое я выше описал, тупо всё сливает на Apache, даже если превьюшка уже в наличии.
Не такой уж я серьезный специалист, но судя по той конфигурации вижу что картинки в случае 404 вполне нормально кидаются fallback`ом на на 8080 порт и генерятся, что собственно и подтверждается практикой.
То, что нужно! как раз занимаюсь подобной проблемой.
У меня возник вопрос, на который пока не могу найти ответ. В логах apache после varnish указывается локальный адрес, т.е. не передаются внешние адреса. Не совсем понятно, как можно передавать адреса по цепочке nginx -> varnish -> apache. При существующей связке nginx+apache этим занимается X-Real-IP + mod_rpaf.

Буду признателен за подсказку.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации