Я запускаю приложение django с nginx в контейнере докера, и все работало отлично, пока я не перестроил контейнер. Внезапно я получаю ошибку 502 (Bad Gateway), а в журналах написано
(111: соединение отклонено) при подключении к восходящему потоку, клиент: 216.245.221.82
Я понятия не имею, что изменилось, если честно, и я новичок в nginx. Код django / python не должен изменяться. Я беру последний образ nginx, поэтому, возможно, произошло изменение, которое не работает с моей конфигурацией. Но я попробовал и более старые версии и получил ту же ошибку. Может быть, мое приложение вылетает из-за отсутствия порта, который оно слушает? (см. скриншот)
Я попытался настроить ALLOWED_HOSTS на ['*']
, установка SSL_NO_VERIFY в True и False, все та же ошибка. У меня нет вариантов .... Я не знаю, как лучше отладить. Локально приложение работает хорошо, поэтому установка отладки на True мне не помогла.
Я просто не знаю. Я развертываю свое приложение на экземпляре EC2 с nginx в контейнере докеров.
Вот мои конфиги и мой составной файл:
server {
listen 443 ssl;
server_name mywebsite.de;
client_max_body_size 0;
charset utf-8;
ssl_stapling off;
ssl_stapling_verify off;
ssl_certificate /etc/letsencrypt/live/mywebsite.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.de/privkey.pem;
set $my_host $http_host;
if ($http_host = "mywebsite.de") {
set $my_host "mywebsite.de";
}
location / {
proxy_pass http://django:5000;
proxy_set_header Host $my_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80 ;
server_name mywebsite.de;
return 301 https://mywebsite.de$request_uri;
}
server {
listen 80 ;
server_name www.mywebsite.de;
return 301 https://mywebsite.de$request_uri;
}
server {
listen 443 ;
server_name www.mywebsite.de;
return 301 https://mywebsite.de$request_uri;
ssl_stapling off;
ssl_stapling_verify off;
ssl_certificate /etc/letsencrypt/live/mywebsite.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mywebsite.de/privkey.pem;
}
version: '3'
services:
django:
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
image: my_website_production_django
env_file:
- ./.envs/.production/.django
- ./.envs/.production/.postgres
command: /start
nginx:
container_name: 'nginx'
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes: ##The following files are found on AWS EC2 instance.
- /home/ubuntu/nginx-conf/my.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt/live/mydomain.de/fullchain.pem:/etc/letsencrypt/live/mydomain.de/fullchain.pem
- /etc/letsencrypt/live/mydomain.de/privkey.pem:/etc/letsencrypt/live/mydomain.de/privkey.pem
depends_on:
- django
redis:
image: redis:5.0
С радостью предоставлю дополнительную информацию или код, если необходимо. Поистине отчаянный и благодарный за помощь. Спасибо.