从Apache转发请求到Ubuntu中的Payara Server 5

在本系列文章中,我们将尝试概述使用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中以处理多个内部服务器。

Source: https://habr.com/ru/post/zh-CN438442/


All Articles