2014-03-29 63 views
3

我目前有一個運行多個虛擬主機的Apache服務器。Apache重映射到碼頭集裝箱內的Apache

但是我想在一個虛擬主機上使用另一個apache安裝程序。我的想法是在Docker容器中安裝具有不同設置的Apache。但是,我將如何設置它? 如果我有一個碼頭集裝箱內的apache,它將不得不聽另一個端口,對吧? docker之外的apache會不得不以某種方式將流量重定向到Docker中的apache?

目前我的配置是這樣的:

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

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

說我想host2.com apache的內部處理泊塢窗內。 我「猜」我可以做一個重定向在Apache泊塢窗的外面有:

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

,然後讓這裏面的碼頭工人在Apache的內部:

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

但我想重定向/重寫/重新映射爲內部,以便客戶端看不到任何更改。這可能嗎?

回答

3

您可以使用薄層來代理每個特定容器(您的host1和host2)嗎?爲此,您可以使用NginxHipache或其他一些代理將流量發送到包含在不同碼頭集裝箱中的兩個不同站點。

在這個例子中,你有三個容器。一個接受並代理另外兩個容器的流量。爲了下面的例子,我已經組成了一些外部端口。


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

  • host1.com - > 49000
  • host2.com - > 49001

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

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

+1

非常感謝!聽起來是一個很好的建議。我從來沒有使用Nginx或Hipache,但我會看看他們。 –