400 плохих запросов на Elastic Beanstalk с использованием Cloudflare - PullRequest
0 голосов
/ 21 июня 2019

Я использую приложение реагирования, работающее в 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

...