При развертывании я получил эту ошибку [error] 9#9: *1 connect() failed (111: Connection refused) while connecting to upstream Nginx 502 Bad Gateway
У меня есть проект, который содержит Django - Docker - Postgresql - Nginx
Я следовал этому руководству для добавления SSL в мой проект с помощью LetsEncrypt Ссылка. До того, как я последовал этому руководству, мой проект успешно работал на digitalocean. После этого я получил ошибку шлюза nginx 502 в моем браузере, и когда я проверяю сертификат, сертификат проверен и мое соединение безопасно. Когда я проверяю журнал прокси-контейнера на терминале, я вижу [ошибку] 9#9: *1 connect() failed (111: Connection refused) while connecting to upstream error upstream: uwsgi://my_ip:9000.
мой файл docker-compose-prod-yml:
version: "3.9"
services:
app:
build:
context: .
dockerfile: ./Dockerfile
restart: always
command: /start
environment:
- DJANGO_SECRET_KEY=${DJANGO_SECRET_KEY}
- DJANGO_ALLOWED_HOSTS=${DOMAIN}
depends_on:
- postgres
proxy:
build:
context: ./docker/proxy
restart: always
depends_on:
- app
ports:
- 80:80
- 443:443
volumes:
- certbot-web:/vol/www
- proxy-dhparams:/vol/proxy
- certbot-certs:/etc/letsencrypt
environment:
- DOMAIN=${DOMAIN}
certbot:
build:
context: ./docker/certbot
command: echo "Skipping..."
environment:
- EMAIL=${ACME_DEFAULT_EMAIL}
- DOMAIN=${DOMAIN}
env_file:
- ./.env
volumes:
- certbot-web:/vol/www
- certbot-certs:/etc/letsencrypt/
depends_on:
- proxy
postgres:
image: "postgres:latest"
container_name: postgres_data
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=te7eyp9cc
- POSTGRES_DB=dj-crm-tenant
ports:
- "54320:5432"
volumes:
certbot-web:
proxy-dhparams:
certbot-certs:
postgres_data:
мой файл defult-ssl-conf.tpl:
server {
listen 80;
server_name ${DOMAIN} www.${DOMAIN};
location /.well-known/acme-challenge/ {
root /vol/www/;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name ${DOMAIN} www.${DOMAIN};
ssl_certificate /etc/letsencrypt/live/${DOMAIN}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${DOMAIN}/privkey.pem;
include /etc/nginx/options-ssl-nginx.conf;
ssl_dhparam /vol/proxy/ssl-dhparams.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location /static {
alias /vol/static;
}
location / {
uwsgi_pass ${APP_HOST}:${APP_PORT};
include /etc/nginx/uwsgi_params;
client_max_body_size 10M;
}
}
Я думаю, что эта ошибка возникает из-за конфигурационного файла nginx, и я пробовал много комбинаций, но не смог изменить эту ошибку. Пожалуйста, помогите мне!
Я попробовал добавить в файл конфигурации nginx
listen 443 ssl http2;
listen [::]:443 ssl http2;
proxy_pass http://localhost:8000/;
proxy_pass http://localhost:9000/;
Попробуйте использовать proxy_pass вместо uwsgi в местоположении и используйте конфигурацию прокси, указанную ниже.
defult-ssl-conf.tpl
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Url-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header User-Agent $http_user_agent;
proxy_pass http://app:8000/;
}