看一下jwilder / nginx-proxy项目。
使用docker-gen的Docker容器的自动Nginx代理
这是代理Docker容器的最简单方法。您无需在每次重新启动容器或启动新容器时都编辑代理配置文件。docker- gen会自动为您完成所有操作,该生成器会为Nginx生成反向代理配置,并在启动和停止容器时重新加载Nginx。
要运行它:
$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock \
jwilder/Nginx-proxy
然后使用env var VIRTUAL_HOST = subdomain.youdomain.com启动要代理的任何容器
$ docker run -e VIRTUAL_HOST=foo.bar.com ...
如果您的DNS设置为将foo.bar.com转发到运行Nginx-proxy的主机,则该请求将被路由到设置了VIRTUAL_HOST env var的容器。
如果您的容器公开了多个端口,则Nginx-proxy将默认使用在端口80上运行的服务。如果需要指定其他端口,则可以将VIRTUAL_PORT env var设置为选择其他端口。如果您的容器仅公开一个端口,并且设置了VIRTUAL_HOST env var,则将选择该端口。