Как исправить: доменное имя не работает в капле цифрового океана.Используя Nginx, docker-compose, django - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь настроить доменное имя для капли моего цифрового океана. Хотя IP-адрес работает отлично, доменное имя, похоже, ничего не делает и получает сообщение «Этот сайт недоступен».

Проверка https://whois.net/ показывает, что DNS-серверы имен указывают в правильном направлении, которые являются серверами имен цифрового океана [NS1.DIGITALOCEAN.COM, NS2.DIGITALOCEAN.COM, NS3.DIGITALOCEAN.COM], и с использованием www. whatsmydns.net показывает, что доменное имя распространилось.

DNS-записи Digital Ocean следующие:

A - domain.tk - указывает на X.X.X.X
CNAME--www.domain.tk является псевдонимом domain.tk
NS - domain.tk - направляет на ns1.digtalocean.com
NS - domain.tk - направляет на ns2.digtalocean.com
NS - domain.tk - направляет на ns3.digtalocean.com

Я использую домен .tk с использованием freenom и настроил там те же доменные серверы имен.

Моя конфигурация NGINX следующая:

upstream jaciv_server {

    server djangoapp:8000; 
}

server {

    listen 80;
    server_name domain.tk www.domain.tk;

    location / {
        proxy_pass http://jaciv_server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /opt/services/djangoapp/static/;
    }

    location /media/ {
        alias /opt/services/djangoapp/media/;
    }
}

Мой docker-compose.yml следующий

version: '3' 

services:

  djangoapp:
    build: .
    volumes:
      - .:/opt/services/djangoapp/src
      - static_volume:/opt/services/djangoapp/static
      - media_volume:/opt/services/djangoapp/media
    domainname: jaciv.tk
    networks:
      - nginx_network
      - database1_network

    depends_on:
      - database1

  nginx:
    image: nginx:1.13
    ports:
      - 8000:80
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - static_volume:/opt/services/djangoapp/static
      - media_volume:/opt/services/djangoapp/media
    depends_on:
      - djangoapp
      - redis
    networks:
      - nginx_network

  database1:
    image: postgres:10
    networks:
      - database1_network
    volumes:
      - database1_volume:/var/lib/postgresql/data

  redis:
    image: "redis:alpine"
    networks:
      - database1_network  
      - nginx_network    

  celery:
    build: .
    command: celery -A jaciv_app worker -l info
    volumes:
      - .:/opt/services/djangoapp/src
    depends_on:
      - database1
      - redis
      - djangoapp
    networks:
      - database1_network

  celery-beat:
    build: .
    command: celery -A jaciv_app  beat -l info
    volumes:
      - .:/opt/services/djangoapp/src
    depends_on:
      - database1
      - redis    
      - djangoapp
    networks:
      - database1_network  
      - nginx_network    

networks:
  nginx_network:
    driver: bridge
  database1_network:
    driver: bridge

volumes:
  database1_volume:
  static_volume: 
  media_volume: 

Мои разрешенные хосты - настройка django

ALLOWED_HOSTS = ['domain.tk', 'X.X.X.X']

1 Ответ

0 голосов
/ 19 июня 2019

Порты для контейнера nginx в вашем файле docker-compose.yml отключены.
Вы должны использовать:

  nginx:
    image: nginx:1.13
    ports:
      - 80:80

Вы хотите, чтобы прокси-сервер докера прослушивал порт 80 (первый «80» из «80:80») и хотел, чтобы этот трафик передавался на порт 80 (второй «80» из «80:80») в контейнер nginx, так как это порт по умолчанию, который nginx будет прослушивать.

...