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

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

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

有帮助吗?

解决方案

不能将两个进程绑定到同一 IP 地址上的同一端口。您可以将另一个 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 地址。一些网络服务器(apache) mod_rpaf) 可以用 X-Forwarded-For 标头替换错误的 IP 地址。也许 CherryPy 有这个?

其他提示

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top