目前我正在使用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
答案 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上。