在本系列文章中,我们将尝试概述使用Apache Web Server(httpd)和Ubuntu在生产中使用Payara Server的基础知识。 许多概念不依赖我们在此使用的工具,而是可以应用于其他方案。
我们的目标是配置以下各项:

在这里,我们有一个Apache Web服务器,可供我们的用户使用。 他们的请求将发送到Payara服务器的两个实例之一。 在这里,我们着眼于使用基于JSESSIONID cookie的会话“粘合”功能,以确保每个用户与同一个Payara服务器进行交互以及会话复制,以确保如果一台Payara服务器发生故障,另一台可以处理现有会话没问题
我们假设Apache Web服务器已经安装和配置。 我们的下一步是配置请求转发,以将流量发送到Payara Server。
什么是请求转发?
请求转发(或代理)是当接收Web流量的服务器将其发送到另一个目的地时。 它们可用于隐藏用户的真实位置,而不是查看内部系统或控制性能。 像大多数Web服务器一样,Apache Web服务器可以补充模块,使其能够将请求转发到服务器并通过代理发送响应。 这意味着您可以使用Apache作为中介,从而无需指定端口号或确切的IP地址,并允许用户从同一服务器接收响应(而不是单击localhost并使用标记为localhost的地址栏:8080 )
配置Apache Web服务器和Payara服务器之间的请求转发
在本文中,我们将查看Ubuntu存储库中提供的软件包。 Ubuntu软件包包含Apache二进制文件,但还具有用于管理配置文件的其他“帮助工具”。 在Ubuntu 18中,我们需要添加到Apache的两个模块是我们先前安装的apache2软件包的一部分。 可以使用以下方法从资源库安装它:
sudo apt install apache2
请注意,在Ubuntu 16.04之前,您将需要使用“ apt-get”而不是“ apt”。我们将安装两个模块以启用http请求的基本转发-mod_proxy和mod_proxy_http。 在Ubuntu中,帮助程序工具控制着这些模块的安装-为了使之更加容易,这些工具将查找它们的依赖性并包括它们。 mod_proxy_http需要mod_proxy才能工作非常有用,这意味着我们的团队如下所示:
sudo a2enmod proxy_http
注意,在这些命令中,我们可以省略前缀“ mod_”

如果要禁用该模块,则有一个名为a2dismod的a2enmod帮助工具,其使用方式相同。 该工具检测到依赖性,还包含mod_proxy。 如果您有多个要激活的模块,则可以在proxy_http之后添加它们,并用空格分隔...
我们稍后将重新启动服务器,因为我们还需要更改配置。
Ubuntu中的apache2软件包有一个示例站点配置,称为“ 000-default”。 该站点的配置文件位于/ etc / apache2 / sites-available文件夹中,并且包含指向启用了sites的文件夹的符号链接。
Apache配置文件结构
通常,您会看到Internet手册将httpd.conf称为用于编辑的配置文件。 这只是“父”默认配置文件。 在Debian / Ubuntu系统(及其派生版本,例如Linux Mint)上,搜索文件为apache2.conf。
读取该文件,并从上到下应用其指令,因此,如果为同一属性设置两个不同的值,则将应用第二个。 (更确切地说,只有在读取第二个参数之前,才会应用第一个参数)。
该文件还可以专门“包含”文件和文件夹(请注意,通配符也可以使用)。 将读取它们并将其与写入“ include”的地方的主要配置组合。 因此,无论如何,主配置文件中的最后一行(如果未指定其他文件)将是要安装的配置的最后一行。
在Ubuntu上新安装的Apache中的默认页面位于/var/www/index.html中,它提供了详细的工作原理概述。
创建一个新的站点配置
我们将不使用默认配置,因为我们需要添加特定的行为。 从可用站点复制旧配置,并将其重命名为令人难忘的。
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/payara-site.conf
在您首选的文本编辑器中以root身份打开一个新文件。 您应该会看到以下内容:

元素包含一系列指令,这些指令告诉服务器如何响应列出的传入请求。 在此示例中,<VirtualHost *:80>处理服务器通过端口80接收到的所有响应。有关VirtualHost标记的详细说明,请参阅Apache文档。
我们需要在标记中添加两行以告诉Apache如何处理传入和传出的流量-一条告诉Apache将请求发送到哪里,另一条告诉Apache答案应该来自哪里。 这样,可以将访问localhost的用户重定向到位于localhost :8080 /的应用程序服务器,并重定向到localhost :8080 /的响应,以便用户看到来自localhost的响应。
要控制传入流量,请添加以下行:
ProxyPass / http://localhost:8080/
该指令告诉Apache将服务器域名之后的所有内容发送到
localhost :8080 /,就好像用户直接转到该URL。
ProxyPassReverse / http://localhost:8080/
该指令告诉Apache代理的返回URL,以便尽管响应从Payara Server实例返回到端口8080,但该URL看起来像是从Apache收到的。 这两个指令一起使用,意味着我们可以使用mod_rewrite避免复杂的正则表达式。
假设我们要使用的域名(例如www.example.com) ,我们的配置意味着对www.example.com/myapp的请求实际上将发送到Payara服务器,就好像用户已直接连接到localhost :8080 // MyApp。
您的文件现在应如下所示(我删除了大部分注释以明确需要的内容):

保存文件。
要禁用默认站点并激活我们的新配置,请运行以下命令:
sudo a2dissite 000-default.conf sudo a2ensite payaraSite.conf
重新启动Apache HTTP Server服务(我们之前跳过的重新启动):
sudo service apache2 restart
要停止和启动Apache HTTP Server,它是:
服务站
sudo service apache2 stop sudo service apache2 start
不要忘记启动Payara Server:
/opt/payara5/bin/asadmin start-domain domain1
在转到localhost进行配置更改之前,您将进入Apache欢迎屏幕:

但是现在,当我们输入localhost / index.html时,我们将其添加到代理服务器中,并为Apache用户配置添加了新指令,该指令现在发送至Payara Server欢迎屏幕:

现在您可以将应用程序添加到Payara服务器
因此,现在我们有一个活动的Apache HTTP服务器,充当我们的代理(具有添加其他模块的能力),以及一个工作的Payara服务器,准备向其中添加应用程序。
我们完成了两个服务器的安装,配置Apache,浏览文件系统的过程,并简要介绍了Payad Server asadmin服务器命令。
下次,我们将研究如何扩展Apache和Payara Server的功能,以及如何使Payara Server提供可扩展性和其他改进,这些将添加到Apache中以处理多个内部服务器。