nginx - 如何设置一个简单的包含 docker 的反向代理(nginx)服务器?

标签 nginx dns docker reverse-proxy

从技术上讲,我不应该问这个问题,因为我已经能够成功完成它,但是我没有在上面记录任何笔记/发现,我被迫删除它所在的 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/

相关文章:

build - Docker build 没有网络,但是 docker run 有

docker - 如何对我的新 VPS 服务器进行 docker 化?

qt - 在 docker 容器中使用音频运行应用程序

python - uWSGI 不使用 .ini 文件

php - Laravel应用HTTP请求到同一Nginx Docker容器上的本地API

DNS:如何从 TLD 中挖掘正确的域名?

email - 如何设置AWS域的电子邮件转发?

nginx - 在Kubernetes的前端和后端之前配置Nginx

nginx - Google Lighthouse 加载 webp 图片时出错

docker - IOTA "one-click-tangle"通过 docker linux 容器 - 错误 1