3

有没有人成功地在同一台机器上同时运行两个不同的 Web 服务器(例如 Apache 和 CherryPy)?我现在正在试验其他 Web 服务器,我想看看我是否可以在保持其他站点正常运行的同时进行试验。您可以说这与其说是一个特定的软件问题,不如说是一个一般的网络问题。

  • 我知道可以在不同的端口上运行两个 Web 服务器。但是有什么方法可以配置它们以便它们可以在同一个端口上运行(即它们都在端口 80 上运行)?
  • Web 服务器不会提供来自相同域的文件。例如,Apache 可能从 foo.domain.com 提供文档,而另一个 Web 服务器将从 bar.domain.com 提供服务。

我知道这不是一个理想的配置。我只是想看看能不能在我冲进兔子洞之前完成。:)

4

3 回答 3

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 文档。但请记住,被代理的应用程序将在其日志中获得 127.0.0.1 而不是请求者的 IP 地址。一些 Web 服务器(apache 使用mod_rpaf)可以用 X-Forwarded-For 标头代替错误的 IP 地址。可能 CherryPy 有这个?

于 2008-08-22T23:24:25.377 回答
0

您最好的选择是将 Apache httpd 放在端口 80 的前面,并使用模块通过 Apache 中继用于其他服务器的请求。最流行的场景是 Apache 后面的 Tomcat,您可以在其中运行 php 和 jsp 应用程序。

我对 CherryPy 不熟悉,所以我只能建议你为 CherryPy 寻找一个 Apache 模块。

编辑:这看起来很有希望:http ://tools.cherrypy.org/wiki/BehindApache

于 2008-08-22T23:09:55.350 回答
0

或者,对于 Ishmaeel 的正确答案,如果您有一个带有 2 个网卡的服务器,您可以让每个服务器回答不同 IP 地址上的请求。

于 2008-08-22T23:12:27.513 回答