我想将请求(通过域名)从公共IP转发到docker容器。我的网络如下所示:

它应该像这样工作:
first.com - >“第一个”容器,172.17.0.2/16
mail.first.com - >“第一个邮件”容器,172.17.0.3/16
secondary.com - >“第二个”容器, 172.17.0.4/16
但我只有转发端口的经验。我想我需要根据互联网请求中的域名信息进行条件转发。对于路由器来说是这样的:
if(request.DomainName == "*.first.com" ||
request.DomainName == "*.second.com"
{
forward(request, "10.0.0.10");
}
Run Code Online (Sandbox Code Playgroud)
对于“Docker 主机”机器也类似。
但我找不到此转发的任何示例。我是否误解了应该如何?
vul*_*iad -1
如果我们谈论域名 - 我们主要谈论的是 http\https 协议转发,但 Docker(docker-proxy 服务) - 是关于处理较低级别的协议 - TCP\UDP。这意味着 - 我们需要设置 http\https 代理,它将我们的请求代理到容器。
有一个很棒的解决方案 - jwilder 的 Nginx-Proxy - 完全自动化的基于 docker 的 nginx-proxy。查看 docker-compose 示例:运行 jwilder 的容器后,您只需添加
VIRTUAL_HOST=first.com
到第一个容器的环境变量并删除 http\https 端口转发到主机。