#amazon-web-services #nginx #https
#amazon-веб-сервисы #nginx #https
Вопрос:
Привет,
Я изо всех сил пытался запустить один экземпляр Docker с HTTPS на AWS.
HTTP-доступ работает правильно, но я не могу получить доступ к HTTPS (Google Chrome показывает «Этот сайт недоступен»).
Здесь у нас есть единственный экземпляр с Elastic Beanstalk. Таким образом, балансировщик нагрузки отсутствует, а сертификаты размещаются в экземпляре.
Я следовал этому руководству: AWS HTTPS Single Instance Docker
Экземпляр работает правильно, мои сертификаты загружены правильно, а также конфигурация nginx. Это то, что я получил до сих пор:
- Пытался настроить группу безопасности на разрешение TCP 443, не сработало.
- Пытался настроить группу безопасности, чтобы разрешить весь трафик в любом месте, не сработало.
- HTTP-доступ с моего доменного имени работает, что заставляет меня поверить, что это не проблема DNS.
- Доступ по протоколу HTTPS работает с curl из экземпляра, поэтому конфигурация nginx выглядит для меня хорошо (при правильном доступе к журналам).
/var/log/nginx/access.log
Не показывает никаких результатов, когда я нажимаю на свое доменное имя с помощью HTTPS.
Вот мои значения группы безопасности
Port range Protocol Source Security groups
80 TCP sg-03d37000000000000 MY_SECURITY_GROUP
All All 0.0.0.0/0 MY_SECURITY_GROUP
All All ::/0 MY_SECURITY_GROUP
443 TCP 0.0.0.0/0 MY_SECURITY_GROUP
Когда я нажимаю на экземпляр nginx в HTTPS
(небезопасно, потому что доменное имя сертификата не 127.0.0.1, результат API правильный)
[ec2-user@ip-123-345-67-89 nginx]$ curl --insecure https://127.0.0.1
{"status":"ok","api":"sdk"}
Это то, что я получаю от Google Chrome при попытке получить доступ к веб-сайту
Google Chrome, показывая «Этот сайт недоступен»
Вот журналы из nginx access
[ec2-user@ip-123-345-67-89 nginx]$ tail -f /var/log/nginx/access.log
AWS_IP - - [01/Oct/2020:14:02:48 0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
MY_IP - - [01/Oct/2020:14:02:50 0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..." "123.345.67.89"
AWS_IP - - [01/Oct/2020:14:02:57 0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
AWS_IP - - [01/Oct/2020:14:03:03 0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
127.0.0.1 - - [01/Oct/2020:14:03:10 0000] "GET / HTTP/1.1" 200 27 "-" "curl/7.61.1" "-"
AWS_IP - - [01/Oct/2020:14:03:12 0000] "GET / HTTP/1.1" 200 56 "-" "ELB-HealthChecker/2.0" "-"
Пока я считаю, что между моей конфигурацией AWS и экземпляром что-то не так, поскольку все работает на экземпляре.
Но конфигурация AWS мне нравится, поэтому у меня нет других идей о происхождении моей проблемы.
Любая помощь будет оценена. Большое спасибо за чтение всего этого.
Комментарии:
1. Можете ли вы уточнить свои настройки? Я вижу, у вас есть
ELB-HealthChecker
, так что вы используете балансировщик нагрузки приложений? «Значения группы безопасности» предназначены для ALB или ваших экземпляров? Если у вас есть ALB, где вы развернули свой SSL-сертификат, на ALB или в инстансах?2. Привет @Marcin, извините, я подумал
single instance
, что это достаточно ясно (я не эксперт в AWS). Я использую один экземпляр с Elastic Beanstalk. Таким образом, балансировщик нагрузки отсутствует, а сертификаты размещаются в экземпляре. В основном я следовал этому руководству: docs.aws.amazon.com/elasticbeanstalk/latest/dg /…3. В ваших журналах отображаются записи из «ELB-HealthChecker / 2.0». Откуда он берется, если у вас нет балансировщика нагрузки?
4. Это было оно! спасибо, приятель. В моей среде Elastic Beanstalk в разделе
Configuration > Capacity
environment type
была установлена балансировка нагрузки. Я изменил его на один экземпляр , и теперь он работает. Моя ошибка заключалась в том, что я предположил, что конфигурация Elastic Beanstalk будет такой же, как у PHP (что у меня было раньше) для Docker. Вы можете опубликовать это как ответ, чтобы я мог решить эту проблему.5. Нет проблем и спасибо.
Ответ №1:
На основе комментариев.
Проблема была вызвана использованием среды EB с балансировкой нагрузки по ошибке, а не в одном экземпляре.
Решение состояло в том, чтобы изменить среду EB с балансировкой нагрузки на среду EB с одним экземпляром в консоли EB.
Комментарии:
1. Как мы можем включить контейнер с поддержкой HTTPS в AWS ECS
2. @sks123245 Вы можете задать новый вопрос по этому поводу. Но, как правило, вам потребуется иметь самозаверяющие SSL-сертификаты и протокол HTTPS в настройках вашей целевой группы.