一尘不染

我的网站运行在Docker容器中,如何实现虚拟主机?

docker

我在vps中分别在两个docker容器中运行两个网站。例如www.myblog.com和www.mybusiness.com

如何在vps中实现virtualhost,以便两个网站都可以使用端口80。

我在其他地方问了这个问题,建议您看看:https :
//github.com/hipache/hipache和https://www.tutum.co/
他们看起来有些弯曲。我试图找到是否有一个简单的方法来实现这一目标。谢谢!

另外,忘了提一下我的vps是Ubuntu 14.04机器。


阅读 237

收藏
2020-06-17

共1个答案

一尘不染

看一下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,则将选择该端口。

2020-06-17