Комментарии 38
Познавательно, спасибо.
0
Спасибо за статью, но описания Varnish и Pressflow лучше перевести.
+2
Это их официальное описание, не нашел почему-то кнопки quote в редакторе хабровском.
0
Хабраюзер, наверное имеет ввиду, что было бы хорошо, если бы вы не официальное описание вставили, а перевод. Английский до сих пор не все знают хорошо…
-1
[blockquote]
текст цитаты
[/blockquote]
Только скобки угловые поставьте.
текст цитаты
[/blockquote]
Только скобки угловые поставьте.
0
Комментарии в конфигах наверное лучше убрать.
Спасибо за статью!
Спасибо за статью!
-1
Советую 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;
А вот сюда:
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;
+8
Во, за этот коммент отдельное спасибо!
Есть ресурсы с подробной сравнительной характеристикой varnish и squid?
Есть ресурсы с подробной сравнительной характеристикой varnish и squid?
0
Дык, вроде тут где то и проскакивало стрессовое сравнение, если не ошибаюсь. + в википедии в качестве фронт-енда squid, что символизирует ;)
и ещё добавлю — в плане раздачи статики надо ещё смотреть в сторону дискового AIO на nginx, да и squid его тоже поддерживает, а к пхп надо прикручивать что-нибудь в духе APC/XCache/eAccelerator, а со сторону Drupal модуль cache_router.
и ещё добавлю — в плане раздачи статики надо ещё смотреть в сторону дискового AIO на nginx, да и squid его тоже поддерживает, а к пхп надо прикручивать что-нибудь в духе APC/XCache/eAccelerator, а со сторону Drupal модуль cache_router.
+1
А данный конфиг Варниша подойдет для стандартного Друпала?
Кстати, в чем конкретно отличия Pressflov с вашей точки зрения? Насколько он быстрее стандартного Друпала?
Кстати, в чем конкретно отличия Pressflov с вашей точки зрения? Насколько он быстрее стандартного Друпала?
0
Varnish без Pressflow не пробовал, не могу точно сказать, но по-идее реально, ведь это просто система кеширования контента отдаваемого пользователю.
По поводу отличий Pressflow от стандартного Друпал можно почитать у них на сайте, но суть его в том, что работа с базой данных, некоторыми структурами данных полностью переработана для ускорения работы системы в целом.
По поводу отличий Pressflow от стандартного Друпал можно почитать у них на сайте, но суть его в том, что работа с базой данных, некоторыми структурами данных полностью переработана для ускорения работы системы в целом.
+1
Если есть nginx, почему бы не использовать его кеширование вместо Varnish'а? Чем Varnish вообще лучше в этом случае?
Давно думаю насчет Varnish, но пока не могу себя убедить, нужно стороннее мнение :)
Давно думаю насчет Varnish, но пока не могу себя убедить, нужно стороннее мнение :)
+2
Убери IP из последнего примера конфига nginx в пункте 3
; )
; )
0
Не могли бы вы объяснить чем решение Varnish+Nginx+Apache + mod_php лучше чем Nginx+fast_cgi php
LoadImpact.com ломится «незарегистрированными» пользователями. Сайт на друпале благодаря всей описанной выше кухне с помощью кеширования выраждается в раздачу статики. Зачем тогда городить огород — nginx прекрасно сам закеширует ответ fastcgi и будет на раздаче этого кеша показывать отличное время.
Складывается ощущение, что вы просто услышали где-то, что «Varnish это оч круто», поставили его и он показал какие-то результаты, которыми вы и поспешили поделиться со всеми. Но есть ли прирост по сравнению с правильной (не тонкой, просто «правильной») настройкой nginx. Я, если честно, сильно сомневаюсь.
LoadImpact.com ломится «незарегистрированными» пользователями. Сайт на друпале благодаря всей описанной выше кухне с помощью кеширования выраждается в раздачу статики. Зачем тогда городить огород — nginx прекрасно сам закеширует ответ fastcgi и будет на раздаче этого кеша показывать отличное время.
Складывается ощущение, что вы просто услышали где-то, что «Varnish это оч круто», поставили его и он показал какие-то результаты, которыми вы и поспешили поделиться со всеми. Но есть ли прирост по сравнению с правильной (не тонкой, просто «правильной») настройкой nginx. Я, если честно, сильно сомневаюсь.
+2
Буду благодарен за пост с описанием правильной настройки Nginx+fast_cgi php под Drupal с соотношением 80 к 20 анонимных к залогиненым пользователям и трафиком от 10000 и более хостов в сутки.
+1
Присоединяюсь. Получается что:
Varnish (proxy) + nginx (proxy web server) + apache (web server) + mod_php
Из этой цепочки можно легко исключить два звена и оставить:
nginx (proxy web server) + fcgi php
и сэкономить памяти как минимум, которую можно использовать под memcache например.
Varnish (proxy) + nginx (proxy web server) + apache (web server) + mod_php
Из этой цепочки можно легко исключить два звена и оставить:
nginx (proxy web server) + fcgi php
и сэкономить памяти как минимум, которую можно использовать под memcache например.
0
А для Joomla есть что-то аналогичное?
-1
Varnish это ключевое ПО для ускорения Вашего сайта.
Varnish — это Open Source ПО, стандартизированное и требующее незначительных ресурсов.
Как то не очень понятно зачем же этот варниш всё же нужен
+3
<пре>
Status: "} obj.status {"
Response: "} obj.response {"
XID: "} req.xid {"
</пре>
<адресс><ссылка href="http://www.varnish-cache.org/">Varnish</ссылка></адресс>
ой
0
Перед вашим правилом для отдачи картинок, надо добавить что-то подобное:
Иначе популярный модуль Imagecache работать не будет. В плане, не будут генериться новые превьюшки при первом обращении по соответствующему url`у. Возможно вы или кто-то ещё из экспертов по nginx`у подскажут, как решить такую проблему: если файл уже имеется, то отдавать его nginx`ом, а если файла нет, то не возвращать 404-й еррор, а передавать запрос на обработку Apache. Правило, которое я выше описал, тупо всё сливает на Apache, даже если превьюшка уже в наличии.
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, даже если превьюшка уже в наличии.
0
Не такой уж я серьезный специалист, но судя по той конфигурации вижу что картинки в случае 404 вполне нормально кидаются fallback`ом на на 8080 порт и генерятся, что собственно и подтверждается практикой.
0
Спасибо. По вашей наводке прокурил директиву error_page. Таким же тёмным как я следует почитать вот это: sysoev.ru/nginx/docs/http/ngx_http_core_module.html#error_page
0
То, что нужно! как раз занимаюсь подобной проблемой.
0
У меня возник вопрос, на который пока не могу найти ответ. В логах apache после varnish указывается локальный адрес, т.е. не передаются внешние адреса. Не совсем понятно, как можно передавать адреса по цепочке nginx -> varnish -> apache. При существующей связке nginx+apache этим занимается X-Real-IP + mod_rpaf.
Буду признателен за подсказку.
Буду признателен за подсказку.
0
Varnish умеет передавать IP в Друпал и в Apaсhe — это есть в доках.
Возможно это поможет: www.varnish-cache.org/lists/pipermail/varnish-misc/2010-July/018909.html
Возможно это поможет: www.varnish-cache.org/lists/pipermail/varnish-misc/2010-July/018909.html
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ускоряем Drupal: Pressflow + Nginx + Varnish