Apache重新映射到docker容器中的apache

时间:2014-03-29 21:13:02

标签: apache rewrite virtualhost docker

我目前正在运行一个运行多个虚拟主机的apache服务器。

但是我想在一个虚拟主机上使用另一个apache设置。我的想法是在docker容器中安装具有不同设置的apache。但那我该如何设置呢? 如果我在docker容器中有一个apache,它必须要听另一个端口,对吧?而docker之外的apache必须以某种方式将流量重定向到docker内的apache?

目前我的配置如下所示:

<Virtualhost *:80>
    ServerName host1.com
    ...
</Virtualhost>

<Virtualhost *:80>
    ServerName host2.com
    ...
</Virtualhost>

说我想在docker里面的apache里面处理host2.com。 我猜测&#34;我可以在docker之外的apache中进行重定向:

<Virtualhost *:80>
    ServerName host2.com
    RedirectMatch ^(.*)$ http://host2.com:81$1
</Virtualhost>

然后把这个放在docker里面的apache里面:

<Virtualhost *:81>
    ServerName host2.com
    ...
</Virtualhost>

但我希望重定向/重写/重新映射是内部的,以便客户端看不到任何更改。这可能吗?

1 个答案:

答案 0 :(得分:3)

您是否可以使用薄层代理每个特定容器(您的host1和host2)?为此,您可以使用NginxHipache或其他代理将流量发送到不同docker容器中包含的两个不同站点。

在此示例中,您有三个容器。一个接受并代理其他两个容器的流量。我为了下面的例子而组成了一些外部端口。


Nginx(或其他)反向代理容器:内部端口80,外部端口80

  • host1.com - &gt; 49000
  • host2.com - &gt; 49001

Docker Apache Container 1:内部端口80,外部端口49000 <Virtualhost *:80> ServerName host1.com ... </Virtualhost>

Docker Apache Container 2:内部端口80,外部端口49001 <Virtualhost *:80> ServerName host2.com ... </Virtualhost>