Ответ 1
Я связался с Центром поддержки Amazon, и я решил показать вам ответ.
Привет, K...,
С Dockerrun.aws.json, скрипты с эластичным Beanstalk будут только читать первый порт из файла JSON.
Это происходит потому, что в /opt/elasticbeanstalk/hooks/appdeploy/pre/ 04run.sh:
если [
echo $EB_CONFIG_DOCKER_PORT | wc -w
-gt 1]; тогда EB_CONFIG_DOCKER_PORT =echo $EB_CONFIG_DOCKER_PORT | awk '{print $1}'
warn "Разрешена только одна директива EXPOSE с использованием первого: $EB_CONFIG_DOCKER_PORT" fiСценарии крюка должны будут указать случайный порт для обратного прокси для пересылки, который затем пересылается в ваш контейнер Docker порт. В настоящее время можно настроить только одно порт.
Что касается конфигурации nginx, то самый быстрый способ достичь порт 443, слушающий вашу среду, - создать отдельный сервер раздел в /etc/nginx/conf.d/, например. custom-ssl.conf, который обрабатывает Рукопожатие HTTPS с клиентом. Это означает, что вам придется поместите свои сертификаты SSL на экземпляр, чтобы nginx мог выполнить SSL-квитирование. Я вернусь к вам позже с образцом Конфигурация HTTPS в nginx.
В противном случае, если ваша среда сбалансирована по нагрузке, вы можете просто настроить прослушиватель HTTPS на ELB и позволить ELB обрабатывать SSL прекращение.
Между тем, если у вас есть другие вопросы, пожалуйста, не стесняйтесь спрашивать!
С уважением,
Центр поддержки Сиднея
*
Привет снова K...,
Как я уже упоминал в своей предыдущей переписке, добавлен пример файла конфигурации .ebextensions, который установит https сервер на nginx, в среде экземпляра Docker. Ты не дайте мне знать, в какой среде вы спрашивали, поэтому привязанные .ebextensions будут работать только в средах с одним экземпляром.
Этот файл конфигурации .ebextensions выполняет следующие действия:
Добавляет конфигурационный файл https-сервера для nginx как /etc/nginx/sites -enabled/https.conf, который обращает прокси-серверы входящий https-сеанс в контейнер Docker как http.
Добавляет объединенный файл SSL/cert в файл /etc/pki/tls/certs/my _ssl.crt, требуемый сервером HTTPS выше.
Добавляет дополнительное правило входа в группу безопасности EC2 среды Beanstalk, чтобы разрешить входящие соединения TCP: 443 с экземпляром
Пожалуйста, не стесняйтесь изменять конфигурационный файл .ebextensions в соответствии с вашими требованиями. и поместите это в каталог .ebextensions/на корневого уровня вашего приложения, которое будет развернуто в Elastic Beanstalk. Если каталог не существует, то создайте его.
Подробнее о файлах конфигурации .ebextensions см. ниже:
Если вы находитесь в среде с балансировкой нагрузки, тогда вам нужно будет загрузите свой сертификат SSL в IAM через CLI AWS и настройте Beanstalk environment ELB, чтобы включить его слушателя HTTPS. инструкции будут отличаться от приведенных выше:
Пожалуйста, дайте мне знать, как вы работаете с конфигурационным файлом .ebextensions и сообщите мне, если вам потребуется дополнительная помощь!
С уважением,
Центр поддержки Сиднея
И он дал мне пример в приложении. 01-Nginx-ssl.config
files:
"/etc/nginx/sites-enabled/https.conf":
mode: "000644"
owner: root
group: root
content: |
server {
listen 443 ssl;
ssl_certificate_key /etc/pki/tls/certs/my_ssl.crt;
ssl_certificate /etc/pki/tls/certs/my_ssl.crt;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://docker;
proxy_http_version 1.1;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
"/etc/pki/tls/certs/my_ssl.crt":
mode: "000400"
owner: root
group: root
content: |
<Your key/cert pair goes here>
Resources:
AllowSSL:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {Ref : AWSEBSecurityGroup}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0