在另一个Web服务器旁运行Apache?

3
有人成功在同一台机器上同时运行两个不同的Web服务器,例如Apache和CherryPy吗?我现在正在尝试使用其他Web服务器进行实验,并希望在保持其他站点正常运行的同时进行实验。你可以说这不仅仅是一个特定软件的问题,而是一个网络问题。
我知道可以在不同的端口上运行两个Web服务器,但是否有任何方法可以配置它们以便它们可以在相同的端口(即它们都在端口80上运行)上运行?
这些Web服务器不会从相同的域名中提供文件。例如,Apache可能会从foo.domain.com提供文档,而另一个Web服务器将从bar.domain.com提供服务。
我知道这不是理想的配置。我只是想看看是否可以在跑下兔子洞之前做到。 :)
3个回答

7
您不能在同一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地址。一些Web服务器(如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 地址上回答请求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接