【问题标题】:Running two copies of Apache web server on same server for two different applications在同一服务器上为两个不同的应用程序运行两个 Apache Web 服务器副本
【发布时间】:2019-08-03 12:37:44
【问题描述】:

我创建了另一个 Tomcat 实例(端口:81)以在服务器中运行不同的应用程序。 Tomcat 运行成功,但我想在它上面运行 apache web 服务器。因此,我将现有的 apache 复制到另一个文件夹中并配置到另一个 tomcat 实例。我面临以下错误。对你的帮助表示感谢。 enter image description here

【问题讨论】:

  • 请将您的设置复制并粘贴到您的问题中。

标签: apache web server


【解决方案1】:

似乎两个实例都配置为也在默认端口 (443) 上侦听 https 连接,也就是说,虽然您可能已将它们配置为侦听不同的 http 端口(即 80 和 81),但您还没有完成https 也是一样。

【讨论】:

  • 感谢您的回答,我删除了 81 端口并将第二个应用程序部署在同一个 tomcat webapps 文件夹中。请协助如何在 443 端口上托管第二个应用程序,我需要在我的 apache httpd.exe 中提供此配置,以下是现有应用程序的当前配置集。服务器名称 example1.com:80
【解决方案2】:

首先,其他东西已经在使用 443 端口,所以试试 8443。

此外,从技术上讲,您可以使用不同的服务名称安装 Tomcat 两次,但为什么。 Tomcat 的美妙之处在于对多个应用程序使用一次安装。

Tomcat 旨在支持多个应用程序。使用 .war 文件,您只需将 .war 文件上传到 Web 应用程序文件夹。 Tomcat会自动解压war文件。

要将应用程序作为 ROOT 应用程序运行,请删除 Tomcat 中的 ROOT 文件夹。将您要安装的应用程序的 .war 文件重命名为 ROOT.war,它将解压到 ROOT 文件夹,如果您保留 tomcat 连接器的默认设置,您将可以从http://servername:8080 访问它。

现在,要添加第二个应用程序,请将 .war 文件复制到 Tomcat webapps 文件夹,使用不同于 ROOT.war 的名称,例如 example.war。它会自动将 .war 文件提取到示例文件夹中。要访问该应用程序,请转至http://servername:8080/example。您不会有两个用于端口 8080 的 Tomcat 连接器,只有 1 个,您将通过上下文路径访问非 ROOT 网络应用程序。

选项 1:

如果要在 Tomcat 中使用 TLS,需要在 Server.xml 中取消注释 8443 连接器。您还需要创建一个密钥库,并将该密钥库信息放入 Server.xml 以允许 TLS。

选项 2(不适用于选项 1,除非您选择不同的端口):

如果您想要使用 TLS 的 Web 服务器,则将 Apache Web Server 设置为侦听 8443,这还需要在 Apache Tomcat 中创建密钥存储和虚拟主机文件,但将 Tomcat 端口保留为 8080,因为它通常是.然后使用 Apache Web 服务器上的虚拟主机设置代理到 Tomcat 应用程序(从 8443 跳转到同一主机上的 8080 端口,Tomcat 仅侦听 127.0.0.1 或具有适当网络隔离的不同主机,因此人们无法绕过网络服务器)。 Apache2 将在 Web 上监听 服务器 FQDN。

例子:

  1. 跳过 Apache Web 服务器,并为单个 8443 端口上的每个 tomcat 应用程序使用不同的上下文路径设置(根据需要)。 (确保 Apache2 不再使用 8443)。

ROOT 应用:

用户—>https://servername:8443

应用程序2:

用户—>https://servername:8443/app2

  1. 使用 Apache Web Server,您可以从端口 8443 代理到 8080。Apache Web Server 在 8443 上侦听,Tomcat 在 8080 上侦听。TLS 加密将在 Web Server 上。 Apache2 和 Tomcat 之间的连接将在同一台服务器上未加密。

这是一个非常详尽的反向代理示例: https://www.digitalocean.com/community/tutorials/how-to-use-apache-http-server-as-reverse-proxy-using-mod_proxy-extension

用户—>https://servername:8443–>http://localhost:8080

【讨论】:

  • 感谢您的回答,对于现有的应用程序,我在我的 tomcat 上使用 apache 网络服务器。现在我需要在同一个 80 端口上托管不同的应用程序,所以正如你所说,在我的 tomcat 中部署了第二个应用程序的 .war 文件,并且我在同一个 apache httpd.exe 中为第二个应用程序(example2.com)添加了域名配置文件如下所示,但域名无法识别。请协助!服务器名称 example1.com:80 服务器名称 example2.com:80
  • 如果不深入了解 DNS 的内容以及 DNS 的工作原理,如果您仅在 LAN 中访问域名,那么域名将是您的服务器名称。如果你想从公共互联网访问它,你需要自己的域名和静态 ip 或带有防火墙规则的动态 dns。
  • 我还需要为第二个应用程序配置 Apache Web 服务器,所以在我的 httpd.exe 文件中,我给出了以下配置: ServerName: example1.com ServerName example2.com 其中 example1 已经存在使用它自己的 SSL 证书,我添加了 example2.com 部分,但是当尝试使用 example2.com 访问第二个应用程序时,example1.com 应用程序正在打开。请帮忙!
  • 使用虚拟主机文件,像这样httpd.apache.org/docs/2.4/vhosts/examples.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 2019-12-12
  • 1970-01-01
  • 2011-11-21
  • 2020-01-20
  • 2019-01-21
相关资源
最近更新 更多