【问题标题】:Running Apache alongside another web server?将 Apache 与另一个 Web 服务器一起运行?
【发布时间】:2010-09-06 15:02:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux apache


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-15
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多