При развертывании я получил эту ошибку [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/;
    }
Вернуться на верх