【问题标题】:How to fix: Domain name not working in digital ocean's droplet. Using Nginx, docker-compose, django如何解决:域名在数字海洋的水滴中不起作用。使用 Nginx、docker-compose、django
【发布时间】:2019-11-01 19:05:30
【问题描述】:

我正在尝试为我的数字海洋水滴设置一个域名。虽然 IP 地址运行良好,但域名似乎没有做任何事情,并得到“无法访问此站点”。

检查https://whois.net/ 它表明 DNS 名称服务器指向正确的方向,即数字海洋的名称服务器 [NS1.DIGITALOCEAN.COM、NS2.DIGITALOCEAN.COM、NS3.DIGITALOCEAN.COM],并使用 www.whatsmydns.net它显示域名已经传播。

Digital Ocean 的 DNS 记录如下:

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

我正在使用 freenom 的 .tk 域,并且在那里配置了相同的域名服务器。

我的 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']

【问题讨论】:

  • 实际运行 Django 服务器的命令在哪里?
  • CMD ["gunicorn", "--chdir", "jaciv_app", "--bind", ":8000", "jaciv_app.wsgi:application"]

标签: django nginx docker-compose digital-ocean domain-name


【解决方案1】:

docker-compose.yml 文件中 nginx 容器的端口已关闭。
你应该使用:

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

您希望 docker 代理侦听端口 80(“80:80”的第一个“80”),并希望该流量被转发到端口 80(“80:80”的第二个“80”) nginx 容器,因为这是 nginx 将侦听的默认端口。

【讨论】:

  • 好吧,事实证明,我只需要等待 48 小时的等待。不过,您的评论帮助我解决了移植问题。由于 nginx 正在侦听端口 8000,因此必须在搜索 URL 时指定它。我改变了这个,现在一切都很完美。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
相关资源
最近更新 更多