将域转发到docker容器
我想将请求(通过域名)从公共IP转发到docker容器。 我的网络如下所示: 它应该是这样工作的:将域转发到docker容器,docker,dns,routing,Docker,Dns,Routing,我想将请求(通过域名)从公共IP转发到docker容器。 我的网络如下所示: 它应该是这样工作的: first.com -> “第一”集装箱, 172.17.0.2/16 mail.first.com -> “第一邮件”容器, 172.17.0.3/16 第二网站 -> "第二个"货柜,, 172.17.0.4/16 但我只对转运港口有经验。我想我需要一个有条件的转发依赖于来自互联网请求的域名信息。 类似于路由器的内容: if(request.DomainN
first.com -> “第一”集装箱, 172.17.0.2/16
mail.first.com -> “第一邮件”容器, 172.17.0.3/16
第二网站 -> "第二个"货柜,, 172.17.0.4/16 但我只对转运港口有经验。我想我需要一个有条件的转发依赖于来自互联网请求的域名信息。 类似于路由器的内容:
if(request.DomainName == "*.first.com" ||
request.DomainName == "*.second.com"
{
forward(request, "10.0.0.10");
}
对于“Docker主机”机器也是如此
但我找不到任何这种转发的例子。我是否误解了它应该是什么样子?如果我们谈论的是域名-我们主要谈论的是http\https协议转发,但Docker(Docker代理服务)-是关于处理较低级别的协议-TCP\UDP。这意味着-我们需要设置http\https代理,这将代理我们的请求到容器 还有一个很好的解决方案——基于docker的全自动nginx代理。看看docker compose示例:在运行jwilder的容器之后,您只需添加 虚拟主机=first.com
添加到第一个容器的环境变量,并删除http\https端口转发到主机。您可以按照以下设置使用apache conf文件
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://172.17.0.2/
ProxyPassReverse / http://172.17.0.2/
ServerName first.com
</VirtualHost>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://172.17.0.3/
ProxyPassReverse / http://172.17.0.3/
ServerName mail.first.com
</VirtualHost>
代理主机
ProxyPass/http://172.17.0.2/
ProxyPassReverse/http://172.17.0.2/
ServerName first.com
代理主机
ProxyPass/http://172.17.0.3/
ProxyPassReverse/http://172.17.0.3/
ServerName mail.first.com
但这不是正确的方式。您必须阅读以下链接