Конфигурация, описанная в вопросе, не сработала, потому что она создала бесконечное перенаправление: 443 (ELB) переадресация на 80 (Apache) переадресация на 443 (ELB) переадресация на 80 (Apache) переадресация на 443 (ELB) и т. д.
Итак, я изменил конфигурацию ELB, чтобы иметь:
- 443 (HTTPS) переадресация на 443 (HTTPS)
- 80 (HTTP) переадресация на 80 (HTTP)
Когда я создал прослушиватель 443 (HTTPS), пересылающий на 443 (HTTPS), я не смог ответить на вопросы, касающиеся аутентификации. Когда я смотрю на описание ELB, я вижу «Внутренняя аутентификация: отключена».
Проверка работоспособности выполняется по протоколу HTTPS:443.
(Я также изменил группу безопасности экземпляра: только балансировщик нагрузки может получить доступ к экземпляру через порты 80 и 443)
Обновление:
Другое решение — открыть на экземпляре только порт 80:
- 80 (HTTP) переадресация на 80 (HTTP)
- 443 (HTTPS) пересылка на 80 (HTTP)
но использовать X-Forwarded-Proto, чтобы определить, использовал ли клиент HTTP или HTTPS, и перенаправить на HTTPS, только если X-Forwarded-Proto = http
Пример с Апачем:
<VirtualHost *:80>
...
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
...
</VirtualHost>
Строка RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
была добавлена, чтобы проверка ELB не перенаправлялась. См. https://serverfault.com/questions/470015/how-should-i-configure-my-elb-health-check-when-using-namevirtualhosts-and-redir для других решений, касающихся проверки работоспособности.
Документация AWS, касающаяся X-Forwarded-Proto: http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html#x-forwarded-proto
person
Céline Aussourd
schedule
19.06.2013