Я использую приложение реагирования, работающее в Docker на NGINX (в качестве прокси) с Cloudflare . Веб прекрасно работает на сервере Ubuntu, но после того, как я попытался перейти на Elastic Beanstalk, у меня возникли проблемы с HTTPS / SSL.
У меня есть один стек контейнера, поэтому я не могу использовать балансировщики нагрузки. Но я определил порты в https-instance-securitygroup.config , как показано ниже.
Но мои запросы постоянно попадают в 400 Bad Request - Простой HTTP-запрос был отправлен на порт HTTPS .
В Cloudflare я установил SSL на Гибкий и включил Всегда использовать HTTPS.
Кроме того, я протестировал контейнер на сервере Ubuntu и смог нормально запустить HTTPS, поэтому с AWS должно быть что-то ...
default.conf
server {
listen 443 default_server ssl;
listen [::]:443 default_server ssl;
server_name www.webname.com;
ssl_certificate /etc/ssl/certs/www.webname.com.cert.pem;
ssl_certificate_key /etc/ssl/certs/www.webname.com.key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_client_certificate /etc/ssl/certs/cloudflare.pem;
# ssl_verify_client on;
root /usr/share/nginx/html;
index index.html;
# force TLS
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
Dockerfile
# Create proxy container for www.webname.com
#STAGE 1 -- Build Web
FROM node:12.2.0-alpine as node
RUN mkdir /web
WORKDIR /web
#Copy dependency definition
COPY packages/app-prerelease-landing/package.json /web
RUN yarn install
#Copy all files
COPY . /web
WORKDIR /web/packages/app-prerelease-landing
RUN yarn && yarn build
#STAGE 2 -- Build nginx server
FROM nginx:1.15.2-alpine
# Set timezone
RUN echo "Europe/Berlin" > /etc/timezone
# Add www certificates
COPY docker/ssl /etc/ssl/certs/
# Add virtual hosts
COPY docker/default.conf /etc/nginx/conf.d/
#Open port 443 for incoming traffic
EXPOSE 443
# Add static content
COPY --from=node /web/packages/app-prerelease-landing/dist /usr/share/nginx/html
HTTPS-экземпляра securitygroup.config
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0
Dockerrun.aws.json
{
"AWSEBDockerrunVersion": "1",
"Ports": [
{
"ContainerPort": 443,
"HostPort": 443
}
]
}
Есть что-то, по чему я скучаю?
++ Присоединение последних 100 строк из журналов.
https://pastebin.com/H15kKMRa