В настоящее время мы размещаем все на серверах Windows IIS 7. Мы только что переехали в Azure, и, как и во многих облаках, размещение окон дороже, чем размещение Linux. У Azure есть свои ограничения для виртуальных машин (по сравнению с AWS), поскольку вы действительно можете привязать только один общедоступный IP-адрес к веб-сервису. Чтобы преодолеть это ограничение и создать некоторую отказоустойчивость и функциональность кэширования, мы рассматриваем NginX как балансировщик нагрузки, обратный прокси-сервер, который ставится перед нашими серверами IIS.
Недавно мы узнали, что Google-Pagspeed для Apache также доступен для NginX. На основе онлайн-руководств и нашего небольшого опыта мы полагаем, что можем получить все преимущества NginX, используя 3 отдельных уровня серверов NginX (см. Ниже). У меня вопрос: как это можно сделать всего на одном виртуальном хосте?
Вот пример того, что мы, вероятно, можем настроить сейчас:
Nginx1 - Этот сервер находится перед Nginx2 и выполняет разгрузку SSL и кэширует статический контент на сервере Linux, на котором он работает. Он будет кэшировать статические ресурсы как на диск, так и на оперативную память.
NginX2 - Этот сервер NginX находится перед Nginx3 и включает Google Mod Pagespeed для NginX. Цель этого сервера - минимизировать и комбинировать скрипты и оптимизировать изображения. Поскольку эти операции могут быть дорогостоящими, мы разместили NginX1 перед этим сервером.
NginX3 - (HA Proxy также будет работать, если мы застряли с тремя запущенными экземплярами NginX одновременно). Это последний сервер NginX, работающий на Linux. Его задача - действовать как обратный прокси для нашей фермы IIS. Идея заключается в том, что если мы запустим еще один сервер IIS (в настоящее время у нас только два), мы просто добавим его в конфигурацию этого NginX, а Nginx выполнит балансировку нагрузки. Мы по-прежнему используем липкие сеансы (из-за некоторого неаккуратного кода asp / asp.net), но в лизинг мы можем разделить рабочую нагрузку между разными виртуальными машинами и масштабировать, добавив машину в нашу «Ферму IIS» (без использования функции фермы IIS. ).
Вопросы:
Заранее спасибо!!!!!
Ссылки:
NginX Pagespeed: http://ngxpagespeed.com/ngx_pagespeed_example/
Обратный прокси NginX: http://www.andrewparisio.com/2011/02/how-to-create-reverse-https-failover.html
Сначала в блоке http поместите:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
upstream pagespeed {
server 127.0.0.1:8081; # weight=10 max_fails=3 fail_timeout=30s;
}
upstream iis {
server 192.168.0.100:80; weight=10 max_fails=3 fail_timeout=10s;
server 192.168.0.101:80; weight=10 max_fails=3 fail_timeout=10s;
}
Тогда вам понадобятся только следующие серверные блоки (урезанные)
server {
listen 443; #SSL offloader
server_name example.com;
#do some ssl things here
location / {
proxy_pass http://pagespeed; #proxy to pagespeed on same nginx
}
}
server {
listen 8081;
server_name example.com;
#do some pagespeed things here
#pagespeed on
location / {
proxy_pass http://iis; # proxy to 2 backend IIS servers
}
}
Используйте сокет unix в своей исходной конфигурации для еще большей производительности. Также вы можете поместить кеш скорости страниц в Memcached.