У меня есть несколько бэкэндов (один из них - 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:
Судя по диаграмме, я не совсем понимаю, что вы пытаетесь сделать (что такое 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
Избавьтесь от препятствий (и раздутий) другого промежуточного слоя. Использование лучшего сервера кажется более эффективным.