如果在RedHat中安装了两个Apache HTTP服务器,如何让它们互不干扰

If two Apache HTTP servers are installed in RedHat, how to make them not disturbing each other

我已经在我的 RedHat 系统中安装了一个 Apache HTTP 服务器,现在我需要安装一个包含另一个 Apache 的 Bitnami 应用程序包。所以我想知道如何让他们不互相打扰?

我想我需要为两个 HTTP 服务器配置不同的端口。但是如果一个是8080,另一个是9090,我们会访问http://[ServerName]:8080/something.htmlhttp://[ServerName]:9090/something.html吗?我觉得这种方式很不方便。我错了还是有更好的主意?

我的建议是做这样的事情。

例如,让一个 Apache 实例侦听端口 80,另一个侦听端口 8080。在端口 80 中侦听的 Apache 实例可以使用 ProxyPass 和 ProxyPassReverse 指令充当另一个 Apache(端口 8080)的代理。

https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

您需要定义前缀或虚拟主机,并在其中添加 ProxyPass 指令。

我不知道这些应用程序针对的是哪种类型的用户,但通常的最终用户在浏览网页时不用于输入端口。

如果您想使用端口,请使用它,但我建议您使用 Name-based Virtual Host 因此您可以为每个应用程序使用不同的域或子域。

除了 this digitalocean page 中文档提供的示例(它们只是指向不同的文件夹)之外,它们还记录了如何重定向到不同的 url。

我完全同意 EndermanAPM 的观点,即通常的最终用户在浏览网页时不习惯输入端口。因此,我只允许最终用户访问端口 80。

除了当前的解决方案之外,我还看到了另一个解决方案:

  • 避免搞乱 Apache 服务器的设置,以免网站出现故障
  • 让 Apache 服务器监听它们指定的端口(8080 和 9090)
  • 在 Apache 服务器前面安装专用代理。代理将侦听端口 80 并定义重定向规则以解析请求并将其重定向到正确的 Apache 服务器。 (见附图)

我推荐你HA Proxy。它是一个非常快速和可靠的 http 和 tcp 代理。多年来,我一直在生产中使用它,在应用程序服务器、Web 服务器甚至数据库服务器前。一旦你熟悉了它的语法,它就非常容易使用。

我知道在等式中引入新的组件可能会增加另一个潜在问题的来源。但我认为架构更干净。此外,两台Apache服务器不会像你要求的那样互相干扰。您可以关闭两者中的任何一个,另一个将继续正常工作。