400 Bad Request 纯 HTTP 请求被发送到 HTTPS 端口,同时使用 Docker 将 Django 部署到 AWS 并让我们加密

问题描述

我正在关注 testdrivenio(https://testdriven.io/blog/django-docker-https-aws/) 的“Django on Docker 系列”系列,用于将项目部署到新域中。我使用 Django 作为后端,但是当我尝试通过端口访问后端 url 时,它通过 docker ps 命令显示,即

http://0.0.0.0:443/

我收到以下错误

400 error

这是我正在使用的 docker-compose 文件

version: '3.7'

services:
  web:
    build:
      context: ./myprojectname
      dockerfile: Dockerfile.staging
    image: 789497322711.dkr.ecr.us-east-3.amazonaws.com/myprojectname-staging:web
    command: gunicorn myprojectname.wsgi:application --bind 0.0.0.0:8005
    volumes:
      - static_volume:/home/myprojectname_staging/web/static
      - media_volume:/home/myprojectname_staging/web/media
    expose:
      - 8000
    env_file:
      - ./.env.staging
  frontendimage:
    container_name: frontendimage
    image: 789497322711.dkr.ecr.us-east-3.amazonaws.com/myprojectname-staging:frontendimage
    stdin_open: true
    build:
      context: .
      dockerfile: frontend/Dockerfile.staging
    # volumes:
    #   - type: bind
    #     source: ./frontend
    #     target: /usr/src/frontend

    #   - '.:/usr/src/frontend'
    #   - '/usr/src/frontend/node_modules'
    ports:
      - '1337:30'
    environment:
      - CHOKIDAR_USEPOLLING=true
    depends_on:
      - web
  Nginx-proxy:
    container_name: Nginx-proxy
    build: ./myprojectname/Nginx
    image: 789497322711.dkr.ecr.us-east-3.amazonaws.com/myprojectname-staging:Nginx-proxy
    restart: always
    ports:
      - 443:443
      - 80:80
    volumes:
      - static_volume:/home/myprojectname_staging/web/staticfiles
      - media_volume:/home/myprojectname_staging/web/mediafiles
      - certs:/etc/Nginx/certs
      - html:/usr/share/Nginx/html
      - vhost:/etc/Nginx/vhost.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
    depends_on:
      - web
  Nginx-proxy-letsencrypt:
    image: jrcs/letsencrypt-Nginx-proxy-companion
    env_file:
      - .env.staging.proxy-companion
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - certs:/etc/Nginx/certs
      - html:/usr/share/Nginx/html
      - vhost:/etc/Nginx/vhost.d
    depends_on:
      - Nginx-proxy

volumes:
  static_volume:
  media_volume:
  certs:
  html:
  vhost:

我的 Nginx 目录

└── Nginx
    ├── Dockerfile
    ├── custom.conf
    └── vhost.d
        └── default

Dockerfile

FROM jwilder/Nginx-proxy
copY vhost.d/default /etc/Nginx/vhost.d/default
copY custom.conf /etc/Nginx/conf.d/custom.conf

自定义配置

client_max_body_size 10M;

server {
  listen 80;
  listen 443 default ssl;
}

location /static/ {
  alias /home/myprojectname_staging/web/static/;
  add_header Access-Control-Allow-Origin *;
}

location /media/ {
  alias /home/myprojectname_staging/web/media/;
  add_header Access-Control-Allow-Origin *;
}

我下一步应该采取什么行动?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)