2008-08-22 54 views
3

有沒有人在同一臺機器上同時運行兩臺不同的Web服務器(如Apache和CherryPy)?我現在正在嘗試其他Web服務器,並且希望看看我是否可以在保持其他站點正常運行的同時進行實驗。你可以說這不是一個特定的軟件問題,因爲它是一個普通的網絡問題。將Apache與另一臺Web服務器一起運行?

  • 我知道它可以運行在不同的端口兩個Web服務器;但有什麼辦法來配置它們,以便它們可以在相同的端口上運行(即它們都在端口80上運行)?
  • 網絡服務器將而不是正在提供來自相同域的文件。例如,Apache可能會提供來自foo.domain.com的文檔,而其他Web服務器將從bar.domain.com提供。

我知道這不是一個理想的配置。我只想看看在我衝刺兔子洞之前是否可以做到這一點。 :)

回答

7

您不能將兩個進程綁定到同一個IP地址上的同一個端口。您可以在該框中添加另一個IP地址,並讓每臺服務器在一臺服務器上偵聽。

另一種選擇是代理將一臺服務器傳遞給另一臺服務器。與Apache,你可以這樣做:

NameVirtualHost * 
<virtualhost *> 
    ServerName other.site.com 

    # assumes CherryPy listens on port 8080 
    ProxyPass/http://127.0.0.1:8080/ 
    ProxyPassReverse/http://127.0.0.1:8080/ 
</Virtualhost> 

這是一個非常簡單的例子,但你可以隨時查詢ProxyPass documentation。請記住,被代理的應用程序將在其日誌中獲得127.0.0.1,而不是請求者的IP地址。一些網絡服務器(apache使用mod_rpaf)可以用X-Forwarded-For頭替代錯誤的IP地址。可能CherryPy有這個?

0

最好的辦法是將Apache httpd放在端口80的前面,並通過使用模塊通過Apache轉發其他服務器的請求。最流行的場景是Apache後面的Tomcat,你可以運行php和jsp應用程序。

我不熟悉CherryPy,所以我只能建議你找一個CherryPy的Apache模塊。

編輯:這看起來很有希望:http://tools.cherrypy.org/wiki/BehindApache

0

此外,要Ishmaeel的正確答案,如果你有2個網卡的服務器,你可以有不同的IP地址,每個服務器回答的請求。

相關問題