Клиент отправил HTTP-запрос на HTTPS-сервер Docker Django Nginx
Недавно я начал изучать docker и создал приложение django, которое я докеризировал. Однако я столкнулся с ошибкой, которую не могу преодолеть. Сообщение об ошибке следующее
Client sent an HTTP request to an HTTPS server.
Вот мой файл конфигурации nginx
server {
listen 80;
listen [::]:80;
server_name 192.168.99.106;
charset utf-8;
location /static {
alias /usr/src/app/static;
}
location / {
proxy_pass http://web:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
А вот мой docker-compose.yml
version: '3'
services:
web:
restart: always
build: ./web
expose:
- "8000"
links:
- postgres:postgres
- redis:redis
volumes:
- web-django:/usr/src/app
- web-static:/usr/src/app/static
env_file: .env
environment:
DEBUG: 'true'
command: sh -c "python manage.py makemigrations &&
python manage.py migrate &&
usr/local/bin/gunicorn inventory.wsgi:application -w 2 -b :8000"
nginx:
restart: always
build: ./nginx/
ports:
- "80:80"
volumes:
- web-static:/www/static
- ./certbot/www:/var/www/certbot/:ro
- ./certbot/conf/:/etc/nginx/ssl/:ro
links:
- web:web
certbot:
image: certbot/certbot:latest
volumes:
- ./certbot/www/:/var/www/certbot/:rw
- ./certbot/conf/:/etc/letsencrypt/:rw
command: certonly --webroot -w /var/www/certbot --force-renewal --email example@gmail.com -d 192.168.99.106 --agree-tos
postgres:
restart: always
image: postgres:latest
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data/
environment:
POSTGRES_DB: "db"
POSTGRES_HOST_AUTH_METHOD: "trust"
POSTGRES_PASSWORD: ${DB_PASS}
redis:
restart: always
image: redis:latest
ports:
- "6379:6379"
volumes:
- redisdata:/data
volumes:
web-django:
web-static:
pgdata:
redisdata:
Используемая мной машина docker работает на порту tcp://192.168.99.106:2376
Первое, что я попытался сделать, это использовать https://, но это привело к проблеме непринятия самоподписанных сертификатов. Я пытался использовать certbot для установки сертификатов LetsEncrypt, но это невозможно на голом IP-адресе.