将Apache与另一台Web服务器一起运行?
问题描述:
有没有人在同一台机器上同时运行两台不同的Web服务器(如Apache和CherryPy)?我现在正在尝试其他Web服务器,并且希望看看我是否可以在保持其他站点正常运行的同时进行实验。你可以说这不是一个特定的软件问题,因为它是一个普通的网络问题。将Apache与另一台Web服务器一起运行?
- 我知道它可以运行在不同的端口两个Web服务器;但有什么办法来配置它们,以便它们可以在相同的端口上运行(即它们都在端口80上运行)?
- 网络服务器将而不是正在提供来自相同域的文件。例如,Apache可能会提供来自foo.domain.com的文档,而其他Web服务器将从bar.domain.com提供。
我知道这不是一个理想的配置。我只想看看在我冲刺兔子洞之前是否可以做到这一点。 :)
答
您不能将两个进程绑定到同一个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有这个?
答
最好的办法是将Apache httpd放在端口80的前面,并通过使用模块通过Apache转发其他服务器的请求。最流行的场景是Apache后面的Tomcat,你可以运行php和jsp应用程序。
我不熟悉CherryPy,所以我只能建议你找一个CherryPy的Apache模块。
编辑:这看起来很有希望:http://tools.cherrypy.org/wiki/BehindApache
答
此外,要Ishmaeel的正确答案,如果你有2个网卡的服务器,你可以有不同的IP地址,每个服务器回答的请求。