用于代理docker容器的动态DNS的最佳软件

时间:2017-05-20 14:57:51

标签: nginx docker proxy dns reverse-proxy

目前我正在使用haproxy手动更新后端,指向不同应用程序的docker nginx容器。

什么是基于主机名将请求代理到不同的本地nginx容器的最佳软件?

我会有一个简单的映射文件,甚至是/ etc / hosts /,当docker容器更改时我的脚本会更新,例如:

domain1 1.1.1.1
domain2 1.1.1.2
domain3 1.1.1.3

理想的是haproxy - >一些软件代理或dns - > docker nginx

软件会在fly中使用map文件,而不是重新加载并将请求指向本地ip地址。

也许我会把清漆缓存放在前面,所以它也需要与之兼容(为什么不会这样)所以流程将是:

请求 - > haproxy(用于多个服务器中的负载平衡)

- >公共服务器上的varnish ip(用于基于主机和路由的内存缓存,所以如果有立即缓存返回响应)

- >一些基于简单映射文件的代理或DNS,它将进一步代理多个docker nginx容器之一的本地ip

- >自定义网络中的docker nginx

- >容器中的一些应用程序

这个流程的最佳实践是什么,我应该将清漆放在其他地方,以及我正在寻找的软件是什么?

我目前正在使用一个额外的nginx并将$ host映射到自定义maps.conf文件中的自定义IP地址,并在更改时正常重新加载nginx,但我觉得有更好的解决方案。

另外我忘了提到我不需要基于地图文件的http代理,但tcp(ssh,smtp,ftp ..)也是,只是在那些情况下我不会在前面有haproxy和清漆这个应用程序会在这些港口公开面对。

例如:

port:22
domain1 1.1.1.1
domain2 1.1.1.2
domain3 1.1.1.3

port:25 
domain1 1.1.1.4
domain2 1.1.1.5
domain3 1.1.1.6

2 个答案:

答案 0 :(得分:0)

我认为你想要的是dnsmasq。这基本上是在运行docker容器的主机上运行的轻量级DNS服务,它允许您使用主机名而不是IP地址。这是解决此问题的常用方法。

设置dnsmasq的一个很好的指南可以在:

找到

http://docs.blowb.org/setup-host/dnsmasq.html

并且搜索dnsmasq和docker会为您指出更多资源。

要记住的一件事是在您的haproxy主机上,请确保修改/etc/resolv.conf以包含您的dnsmasq服务器。

答案 1 :(得分:0)

我认为 Muguet 之类的东西可能会解决您的问题。

来自他们的github repo

  

使用Docker时,有时候访问您的容器很麻烦   使用特定的IP /端口。

     

Muguet为您提供可解析自动生成的DNS服务器   容器IP的主机名,再加上一个反向代理访问所有   您的网络应用程序在端口80上。