Использование одного ELB для каждого приложения - вот путь сюда.
Во-первых, они вам могут понадобиться в любом случае, если каждое приложение находится в своем домене и вам требуется поддержка SSL. В настоящее время в ELB Amazon разрешается использовать только один сертификат SSL для каждого домена, для чего требуется отдельный ELB для каждого домена с поддержкой SSL. (Сертификаты Wildcard SSL являются исключением).
Проблема в том, что проверки работоспособности ELB в настоящее время не могут быть направлены на конкретный виртуальный домен, размещенный в экземпляре EC2. (Заголовок "Host:" не отправляется). Проверка работоспособности ELB всегда идет в домен по умолчанию, как если бы вы загрузили IP-адрес для экземпляра EC2 в своем браузере. Таким образом, для получения проверок работоспособности в домене по умолчанию требуется некоторое количество клея, а затем ответьте со статусом работоспособности определенного приложения.
Вот рабочий пример конфигурации, которая может быть добавлена в server
директиву Nginx . Он будет установлен на каждом из экземпляров EC2 с балансировкой нагрузки.
# This goes in the `server` block noted by 'default_server', often /etc/nginx/sites-enabled/default
# All AWS Health Checks from the ELBs arrive at the default server.
# Forward these requests on the appropriate configuration on this host.
location /health-check/ {
rewrite ^/health-check/(?<domain>[a-zA-Z0-9\.]+) /api/v1/status break;
# Lie about incoming protocol, to avoid the backend issuing a 301 redirect from insecure->secure,
# which would not be considered successful.
proxy_set_header X-Forwarded-Proto 'https';
proxy_set_header "Host" $domain;
proxy_pass http://127.0.0.1;
}
В настройке «Проверка работоспособности» ELB для «first-application.com» вы должны выбрать «HTTP» и порт 80 и ввести путь, например:
/health-check/first-application.com
Если на узле работает указанная выше конфигурация Nginx, запрос будет получен в домене по умолчанию и прокси-ответ от конфигурации Nginx на том же хосте для https://first-application.com/api/v1/status
При таком подходе нет конфигурации для каждого приложения в Nginx. Поскольку у каждого приложения есть уникальное доменное имя, вам просто нужно убедиться, что вы настроили ELB для каждого приложения соответствующим образом.