在另一个Web服务器上运行Apache?
时间:2020-03-05 18:42:18 来源:igfitidea点击:
是否有人在同一台机器上同时运行两个不同的Web服务器(例如Apache和CherryPy)取得了成功?我现在正在尝试其他Web服务器,我想看看是否可以在保持其他站点正常运行的同时进行实验。我们可以说,这不是一个特定的软件问题,而是一个通用的网络问题。
- 我知道可以在不同的端口上运行两个Web服务器。但是有什么方法可以配置它们以便它们可以在同一端口上运行(即它们都在端口80上运行)?
- Web服务器将不提供来自相同域的文件。例如,Apache可能会从foo.domain.com提供文档,而另一个Web服务器会从bar.domain.com提供服务。
我确实知道这不是理想的配置。我想看看是否可以在冲刺兔子洞之前完成。 :)
解决方案
回答
最好的选择是将Apache httpd放在端口80的前面,并使用模块通过Apache中继对其他服务器的请求。最受欢迎的场景是Apache之后的Tomcat,我们将可以在其中运行php和jsp应用程序。
我对CherryPy并不熟悉,所以我只能建议我们为CherryPy寻找一个Apache模块。
编辑:这看起来很有希望:http://tools.cherrypy.org/wiki/BehindApache
回答
另外,对于Ishmaeel的正确答案,如果服务器具有2个网卡,则可以让每个服务器在不同的IP地址上回答请求。
回答
我们不能将两个进程绑定到同一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可以做到)可以代替错误的IP地址来替换X-Forwarded-For标头。 CherryPy可能有这个吗?