【问题标题】:Access via URL instead IP address to local dockerized Django project通过 URL 而不是 IP 地址访问本地 dockerized Django 项目
【发布时间】:2021-06-16 08:03:47
【问题描述】:

我有一个小型 Django 项目,它在 docker 容器中运行并且仅在本地(无需将其暴露给整个互联网,只需我的办公室),但由于它是一个公司项目,我想给使用它的人使用 URL 访问它的可能性(可能类似于“projectName.corporateWhereIWork.org”)而不是 主机 ip 地址:端口。老实说,我已经阅读和搜索过诸如“反向代理”、“同伴”、“ACME”、“DNS”之类的术语,但这些概念对我来说非常难以理解,我不知道如何配置nginx 正确。

这是我的 nginx 配置文件(看这是一个非常简单的配置):

client_max_body_size 10M;

upstream project {  
  ip_hash;
  server project:8000;
}

server {

    location /static/ {    
        autoindex on;    
        alias /src/static/; 
    }

    location /media/ {
        autoindex on;
        alias /src/media/;
    }

    location / {
        proxy_pass http://project/;
    }
    listen 8000;
    server_name localhost;
}

还有我的 Django 图像入口点:

CMD ["sh", "-c", "python manage.py collectstatic --no-input; python manage.py migrate; gunicorn project.wsgi -b 0.0.0.0:8000"]

两个容器都暴露在同一个端口。

【问题讨论】:

    标签: django docker nginx


    【解决方案1】:

    如果只是少数人在同一台机器上工作,那么最简单的方法是编辑每台机器上的本地主机文件。例如。在 Windows 上,您可以将 192.168.0.10 example.com 之类的条目附加到 C:\Windows\System32\drivers\etc\hosts,该机器现在会将 example.com 解析为给定的 IP 地址。

    如果您的要求涉及很多人和机器,那么很遗憾,您将不得不熟悉 DNS。

    但别担心。出于您陈述的目的,您不需要了解比 DNS 的基本功能更复杂的任何内容 - 即将名称解析为 IP 地址,就像上面的 hosts 示例中所做的那样。

    您在这里感兴趣的条目类型是A(将名称解析为IP)和CNAME(将名称解析为另一个名称)。例如。您可以设置将example.com 解析为192.168.0.10A 记录和将www.example.com 解析为example.comCNAME 记录。然后后者会将www.example.com 解析为为example.com 提供的IP 地址。

    但是,您如何实际设置它需要您进行一些研究。您可能会很幸运,并在办公室路由器中内置了该功能,但不要指望它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2015-01-01
      • 2021-10-10
      • 1970-01-01
      • 2018-03-03
      • 2015-09-17
      • 2018-09-28
      相关资源
      最近更新 更多