У меня есть VPS с несколькими сайтами. Некоторые из веб-сайтов являются веб-сайтами WP, а некоторые - другими динамическими веб-сайтами.
Мне интересно добавить своего рода слой обратного прокси / кеширования. Однако я не хочу кэшировать все сайты ...
Я видел, что многие люди рекомендуют использовать Varnish. Проблема, которую я обнаружил в Varnish, заключается в том, что он берет 80-й порт и все кэширует.
Когда я искал решения или способы избежать кеширования для некоторых веб-сайтов, я обнаружил fastcgi_cache. Судя по всему, вы можете кешировать напрямую через Nginx в файлы, а затем обрабатывать их статически. Я также где-то видел, что вы можете кэшировать из Nginx в memcached, но я пока не знаю, как это сделать.
В любом случае, вот мои варианты: 1. Используя Varnish и каким-то образом настраивая файлы конфигурации, чтобы передавать запросы на основе имени домена. 2. Использование fastcgi_cache на Nginx. 3. Использование бутерброда. Nginx слушает порт 80, обслуживает статические файлы и отправляет все файлы php в Varnish на другом порту, который передаст всех некэшированных пользователей другому экземпляру Nginx.
Как ты думаешь, что мне делать?
Спасибо.
Вы можете настроить Varnish для передачи некоторых запросов на основе доменного имени, это очень просто, и Varnish не будет заметно замедлять работу сайтов, которые вы не кэшируете.
Вы просто добавляете небольшой код VCL в vcl_recv, например:
if (req.http.Host == "www.pass_this_thru.com") {
return(pass);
}
Я думаю, это зависит от ожидаемой нагрузки, но модели, выбранные обеими системами, архитектурно различаются.
Во-первых, nginx использует модель на основе событий для обработки запросов, тогда как Varnish использует модель на основе потоков.
Varnish помещает свой кэшированный контент в очень эффективное дерево критических битов. Я не мог узнать, какая реализация используется nginx.
nginx должен быть более эффективным, потому что он использует модель, основанную на неблокирующих событиях, для равномерного распределения нагрузки с минимальным количеством конфликтов, насколько это возможно, однако, если время поиска из кеша намного медленнее, вы можете утверждать, что он отменяет вещи.
Varnish создает пулы потоков (обычно из многих потоков, около 500) для обработки нескольких потоков. Стоимость здесь связана с переключением контекста, особенно если вам нужно обработать много запросов.
На мой взгляд, лак будет работать лучше, если вы увеличите количество ядер, с которыми вам придется бороться с конкуренцией, плюс его действительно очень хороший алгоритм кеширования делает его поиск и ответы очень быстрыми. Используйте лак, если у вас много ядер и очень большой трафик / контент для доставки.
Nginx, с другой стороны, использует гораздо менее сложный подход к управлению ресурсами, и я полагаю, что малые / средние кеши на маломощных системах, вероятно, будут лучше работать с точки зрения эффективности и количества запросов в секунду.
В целом, лак лучше всего работает в специальной системе с по крайней мере 2 процессора / ядра. Он будет линейно масштабироваться по мере добавления процессора.
Nginx, вероятно, лучше всего работает в меньшей многопользовательской системе, где нагрузка на кеш не такая сильная. Он также будет масштабироваться линейно, но я подозреваю, что его алгоритм и реализация кэширования не так хороши, как алгоритм лака, который может стать узким местом производительности при достижении высокого уровня трафика.
Думаю, вам было бы интересно: Результаты тестов: Nginx и Varnish