我有一个在 docker 容器中运行的小型 Django 项目,并且仅在本地(不需要将它暴露给整个互联网,只是我的办公室),但由于它是一个公司项目,我想给使用它的人可以使用 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"]
两个容器都暴露在同一个端口。
答案 0 :(得分:1)
如果只是少数人在同一台机器上工作,那么最简单的方法就是在每台机器上编辑本地主机文件。例如。在 Windows 上,您可以将 192.168.0.10 example.com
之类的条目附加到 C:\Windows\System32\drivers\etc\hosts
,该机器现在会将 example.com 解析为给定的 IP 地址。
如果您的要求涉及许多人和机器,那么不幸的是,您将不得不熟悉 DNS。
不过别担心。出于您所述的目的,您不需要了解比 DNS 的基本功能更复杂的东西——即将名称解析为 IP 地址,如上面 hosts
示例中所做的那样。
此处您感兴趣的条目类型是 A
(将名称解析为 IP)和 CNAME
(将名称解析为另一个名称)。例如。您可以设置将 A
解析为 example.com
的 192.168.0.10
记录和将 CNAME
解析为 www.example.com
的 example.com
记录。然后后者会将 www.example.com
解析为为 example.com
提供的 IP 地址。
然而,您实际上如何设置它需要您进行一些研究。您可能会很幸运,并在您的办公室路由器中内置了该功能,但不要指望它。