从技术上讲,我不应该问这个问题,因为我已经能够成功完成它,但是我没有在上面记录任何笔记/发现,我被迫删除它所在的 centos VM,因为它无法正常启动.所以现在它的 FUBAR 需要记住我做了什么。
对我来说,挑战是拥有 3 个不同的 docker 容器。一个 npm repo container ,凉亭容器(评论 1 中的链接)和 controlled by a nginx container . npm repo 和 bower 必须能够访问相同的 IP 地址,但访问不同的端口,并通过特殊名称(如 bower.swig.swag)进行访问。或 npm.swig.swag。端口处理将由 nginx 容器负责,并反过来让任何希望在 IP 地址上访问的容器附加 --env
VIRTUAL_HOST=
的标志(如 nginx 链接上的 docker 信息所述)。
因此,npm 容器和 bower 容器所需的 IP 分别是 10.1.10.1 端口 8080:8080 和 5678:5678。我认为 DNS 服务器是 10.1.10.30 或者它是基于本地主机的,但是我目前无法确定,因为我尝试提供的几乎所有 IP,不包括本地主机 127.0.0.1 和 10.0.2.15 都不能与关系一起使用到docker run -p
标志(我不知道为什么会发生这种情况。一分钟后,我提供给 docker 的任何 ip 都可以工作,删除它后,它没有。我在评论 2 中获得了指向错误的链接。愚蠢的链接规则。) Nginx 的目标是如果我没记错的话,本地主机。下行端口 80:80。
我不记得我使用的确切标志,但这里有一些我需要使用 docker 运行的可能标志。他们混合了
docker run
-p, --dns=, --env=VIRTUAL_HOST=, -h, --expose
当我们为容器指定虚拟主机时,我们还必须修改
/etc/hosts
的 vim/vi 文件中的一些内容。但我不记得我应该如何添加它。最后,应该有人能够获取指定的虚拟主机名,进入浏览器的 http 栏并输入,http://virtualhostname
并被授予访问该网站的权限。这就是我知道它正在工作的方式。认为有人可以让我重回正轨吗? (也会将此发布到服务器故障。我无法在使用哪个站点之间取得平衡,所以我也不妨。)
最佳答案
虽然 IP 问题仍然存在(根据 nmap,我几乎所有的 ip 都被过滤了,目前无法解决这个问题。),我仍然能够成功地重新创建我在 localhost 上所做的事情。
nginx docker information包含有关 --env=VIRTUAL_PORT=
的信息.这用于在 nginx 服务器上使用不同的端口。与 --env=VIRTUAL_HOST=
结合使用时, 这允许别名绑定(bind)到端口号后面的 ip 地址。因此,在 URL 搜索栏中输入虚拟主机名称可以让您快速链接到它后面的 ip 和端口。
除了在 docker run 中指定,vim/vi /etc/hosts
必须修改文件以包含要链接别名的端口和 IP 地址。就个人而言,这似乎效率低下,因为我宁愿让 docker 设置它的容器规范而不是我自己。尽管如此,其中IP和端口的格式如下......
IP ADDRESS alias1 alias2 alias3 alias4...
::PORT aliasToPort
::PORT 2ndAliasToPort
因此对于特定的 IP 地址,它可以接受各种别名,并且可以进一步指定从哪个端口访问特定别名。
回顾一下,docker 必须运行为
docker run --env=VIRTUAL_HOST=*alias* --env=VIRTUAL_PORT=*port* -p *IP*:*port*:*ContainerPort* *image*
对于您希望从 docker 包含的 nginx 服务器运行的任何容器。和/etc/hosts
的vim/vi文件必须输入为*IP* *alias*
::*PORT* *aliasToPort*
关于nginx - 如何设置一个简单的包含 docker 的反向代理(nginx)服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408816/