Назад | Перейти на главную страницу

Nginx, Varnish, ESI - это сработает?

У меня есть несколько бэкэндов (один из них - nginx + пассажир) для объединения через ESI. Поскольку я не хочу обойтись без gzip / deflate, а SSL varnish не может выполнять эту работу из коробки. Итак, я подумал о следующей настройке:

http://img693.imageshack.us/img693/38/esinginx.png

Что вы думаете? перебор?

Вам вообще нужен лак?

1. nginx может кешировать результаты на диске или в memcached
2. nginx имеет SSI
3. nginx имеет балансировщик справедливой нагрузки или балансир
4. Лучшая практика гласит, что HAProxy перед nginx - хороший ход.

Не забывайте о KISS - больше компонентов в вашей системе - она ​​становится менее стабильной.

Если ESI абсолютно необходим, я бы рекомендовал следующую настройку

Пользователь -> Nginx (gzip + прокси + завершение SSL) -> Varnish (ESI) -> Сервер приложений Ngnix.

Таким образом, вам не нужно делегировать запросы ssl, gzip одному внутреннему серверу, а запросы ESI - другому.

Сделайте так, чтобы Varnish удалял заголовки Accept-Encoding из входящих запросов, чтобы ваши серверные части не пытались выполнить gzip-архивирование (если они настроены на это), а Varnish может анализировать объекты ответов вашего внутреннего интерфейса на предмет наличия ESI. Затем Varnish представит вашему прокси-серверу Nginx полностью сформированный контент. Это оставляет прокси Nginx для сжатия и доставки SSL.

У меня очень похожая установка работает в производственной среде (без завершения SSL), и я обнаружил, что она работает довольно изящно.

Хотя я лично не использовал его, у Nginx есть плагин ESI:

http://github.com/taf2/nginx-esi

Судя по диаграмме, я не совсем понимаю, что вы пытаетесь сделать (что такое ESI?). Однако есть небольшой интерфейсный сервер с быстрой балансировкой нагрузки, который называется «фунт», и он будет обрабатывать уровень SSL за вас. Он может находиться рядом с Varnish на передней панели порта 443 (я предполагаю, что у вас есть Varnish на порту 80?) И передавать SSL-трафик напрямую в nginx (SSL все равно нельзя кэшировать, поэтому нет смысла проходить через Varnish). Нормальный незашифрованный трафик будет поступать в Varnish, как и ожидалось.

Server       Requests per second
--------------------------------
G-WAN Web server       142,000 
Lighttpd Web server     60,000
Nginx Web server        57,000
Varnish Cache server    28,000

Избавьтесь от препятствий (и раздутий) другого промежуточного слоя. Использование лучшего сервера кажется более эффективным.