如何使用 Apache 作为反向代理 - 分步指南

已发表: 2023-07-23

在本指南中将找到如何使用 Apache 作为反向代理的答案。 反向代理服务器是一种功能强大的工具,可充当客户端和后端服务器(例如 Web 服务器或应用程序服务器)之间的中介。 与位于客户端和互联网之间的传统正向代理不同,反向代理位于客户端和一台或多台服务器之间。

当客户端发出请求时,反向代理服务器代表客户端将该请求转发到适当的后端服务器。 然后它从后端服务器获取响应并将其发送回客户端。 此过程有效地向客户端隐藏后端服务器的身份和内部结构。

反向代理具有多种优势,包括通过保护后端服务器不直接暴露于互联网来增强安全性、在多个服务器之间分配客户端请求的负载平衡以及通过向客户端提供缓存内容来提高性能的缓存。

目录

区分正向代理和反向代理

  • 代理方向:
    • 转发代理: 处理客户端访问互联网资源的请求。 它位于客户端和互联网之间,将客户端请求转发到外部服务器。
    • 反向代理:管理客户端访问组织网络内资源的请求。 它位于客户端和后端服务器之间,将客户端请求转发到适当的后端服务器。
  • 客户视角:
    • 转发代理: 客户端通常不知道转发代理的存在。 客户端的请求被发送到代理服务器,目标服务器接收该请求,就好像该请求直接来自客户端一样。
    • 反向代理: 客户端直接将请求发送到反向代理,而不是后端服务器。 然后,反向代理代表客户端将请求转发到后端服务器。
  • 使用案例:
    • 转发代理:通常用于内容过滤、访问控制以及通过隐藏客户端的 IP 地址来匿名化客户端请求。
    • 反向代理主要用于负载平衡、SSL 终止、缓存以及为后端服务提供安全网关。
  • 服务器视角:
    • 正向代理:目标服务器看到来自正向代理的请求,而不是原始客户端。 它不知道实际的客户端发出请求。
    • 反向代理:后端服务器将反向代理视为发出请求的客户端。 他们不知道真正的客户提出了最初的请求。
  • 安全影响:
    • 转发代理:通过屏蔽客户端的 IP 地址来增强客户端隐私。 它还可以通过在恶意内容到达客户端之前对其进行过滤来提供额外的安全层。
    • 反向代理:充当后端服务器的屏障,使其内部结构对外部客户端隐藏。 它有助于防止直接暴露于互联网和潜在的攻击。
  • 部署地点:
    • 转发代理:部署在客户端网络内或客户端设备上,以控制出站互联网访问。
    • 反向代理:部署在组织的网络边缘、互联网和后端服务器之间,管理入站客户端请求。

探索反向代理的各种用例

反向代理提供了广泛的用例,可增强 Web 应用程序和服务的性能、安全性和可扩展性。

反向代理的一些关键用例包括

  • 负载平衡:反向代理可以跨多个后端服务器分发传入的客户端请求。 这有助于分配负载、防止服务器过载并确保更好的资源利用率。 负载平衡增强了应用程序的整体性能和响应能力。
  • SSL 终止:反向代理可以代表后端服务器处理 SSL/TLS 加密和解密。 这可以减轻后端服务器资源密集型 SSL 处理的负担,从而减少其工作负载并简化证书管理。
  • 缓存:反向代理可以将频繁请求的资源存储在缓存中。 当客户端请求相同的资源时,反向代理直接提供缓存的内容,从而减少服务器负载并缩短响应时间。
  • 网页加速:通过缓存静态内容和压缩数据,反向代理可以加速客户端网页的加载,从而带来更流畅的用户体验。
  • 安全和 DDoS 保护:反向代理充当互联网和后端服务器之间的保护屏障。 它们可以过滤和阻止恶意流量,防止分布式拒绝服务(DDoS)攻击,并隐藏后端服务器的真实IP地址以防止直接攻击。
  • Web 应用程序防火墙 (WAF) :反向代理可以充当 WAF,检查传入流量是否存在潜在威胁,例如 SQL 注入、跨站点脚本 (XSS) 和其他恶意活动。 它们有助于保护 Web 应用程序免受常见漏洞的影响。
  • 单入口点:反向代理为外部客户端提供访问多个后端服务器的单一入口点。 这简化了网络架构,并允许更轻松地管理和扩展服务。
  • 协议转换:反向代理可以将请求从一种协议转换为另一种协议。 例如,它们可以将 HTTP 请求转换为 WebSocket 或其他特定于应用程序的协议,从而促进客户端和服务器之间的通信。
  • 内容压缩和优化:反向代理可以在将传出内容发送到客户端之前对其进行压缩,从而减少数据传输大小并缩短页面加载时间。

先决条件 - 将 Apache 配置为反向代理

安装按位 SSH 客户端

  1. 在浏览器中搜索Bitwise SSH Client 。 单击链接 https://www.bitvise.com/ssh-client-download 并开始安装

2. 安装安装程序后,从计算机中打开 .exe 文件并完成 Bitvise SSH 客户端安装。

如何使用bitwise登录服务器SSH?

  1. 安装完成后,将出现以下窗口。 输入您的主机、端口和用户名,从初始方法下拉列表中选择密码,然后单击登录。 将出现一个弹出窗口,要求输入密码。 输入您的 SSH 密码。

2. 登录后,单击“新建终端控制台”,终端将立即出现。

第 1 步 - 安装 Apache

连接服务器

现在,要建立与服务器的连接并使用 APT 存储库刷新本地包索引,请在终端中输入以下命令并按 Enter:

 易于更新

更新需要一些时间才能完成,同时等待其完成。

如何在 Ubuntu 上安装 Apache

  1. 在 Ubuntu 上安装 Apache

现在,要从 Ubuntu 安装 Apache,请输入以下命令并按 Enter 键

apt install -y apache2

2.验证 Apache 版本

安装后,您可以选择使用以下命令验证 Apache 版本

apache2 -version

3.验证 Apache 状态

您还可以选择使用以下命令验证 Apache2 的状态。 这可以帮助您快速确定服务器是否正在运行,以及是否存在任何需要注意的问题。

 systemctl status apache2

正如您所观察到的,屏幕上显示的 (END) 状态清楚地表明 Apache2 安装成功。 此结果确认安装过程已完成,没有任何错误或问题。

4.启用阿帕奇

要在 Ubuntu 上启用 Apache2,请使用以下命令:

 systemctl enabled apache2

5.启动阿帕奇

如果您想在 Ubuntu 上重新启动 Apache2,请在终端中使用以下命令:

 systemctl start apache2

如何在Almalinux上安装Apache?

  1. 检查可用更新

要在 Almalinux 上安装 Apache2,请通过运行“ dnf check-update”命令检查可用更新。

 dnf check-update

如果发现更新,请继续使用“dnf update”更新您的 Linode。 此外,如果在此过程中更新了任何内核组件,请记住使用“rebo​​ot”重新启动 Linode 以应用更改。

  1. 安装阿帕奇

现在继续安装所需的 Apache 软件包。

 dnf install httpd httpd-tools
  1. 启动阿帕奇

安装 Apache 后,它不会自动启动。 要启动并启用它,请使用systemctl实用程序。

 systemctl start httpd
  1. 启用阿帕奇

为了确保 Apache 在每次系统重新启动时自动重新启动,请启用它。

 systemctl enable httpd
  1. 检查 Apache 状态

使用“systemctl status”命令检查 Apache 的状态。 它应该显示为活动且正在运行。

 systemctl status httpd

第 2 步 - 为反向代理启用 Apache 模块

如何在 Ubuntu 上启用它?

为了有效地利用 Apache Web Server 的反向代理,您必须启用特定的 Apache 模块,这些模块对于支持反向代理服务器所需的附加功能至关重要。

  1. 确定所需的模块

mod_proxy :mod_proxy 作为 Apache 的主要代理模块,可以有效地处理连接和重定向。 它使 Apache 能够充当底层后端服务器的网关,使其成为所有反向代理设置不可或缺的模块。

mod_proxy_http :该模块依赖于 mod_proxy,对于在代理服务器环境中支持HTTPHTTPS请求是必不可少的。 它使 Apache 能够使用HTTP/HTTPS 协议熟练地处理 Web 应用程序的代理。

mod_ssl: mod_ssl 提供基本功能,为 Apache HTTP 服务器配备了对SSL v3TLS v1.x协议的支持。 该模块对于建立安全、加密的连接、确保数据完整性和增强 Web 服务器的安全性至关重要。

2.启用模块

现在,我们将使用a2enmod命令激活这些模块:

 sudo a2enmod proxy sudo a2enmod proxy_http sudo a2enmod ssl
  1. 重新启动 Apache2 服务器

启用任何新的 Apache 模块后,一定不要忽视重新启动apache2服务器的关键步骤。 此步骤可确保更改生效并允许新激活的模块完全集成到 Apache 服务器的配置中。

 sudo systemctl restart apache2
  1. 验证模块

您可以使用以下命令确认这些模块的活动状态:

 sudo apachectl -M

第 3 步 - Apache 反向代理配置

现在,配置Apache反向代理以接受来自 Internet 的请求并有效地将它们转发到您选择的资源。

  1. 禁用默认的 Apache

首先,您将禁用默认的 Apache 虚拟主机配置文件。 这可以使用以下命令来实现:

 a2dissite 000-default.conf
  1. 创建一个新的配置文件

创建新的虚拟主机配置文件是自定义 Apache 以在同一服务器上为不同的 Web 应用程序或网站提供服务的基本步骤。 A 虚拟主机允许Apache管理多个域或子域,每个域或子域都有自己独特的配置和设置。

要创建新的虚拟主机配置文件,请按照以下常规步骤操作:

选择名称:为虚拟主机文件选择一个描述性名称,通常以“.conf”扩展名结尾。 例如,“example.com.conf”或“cyberpanel.conf”。

导航到 Apache 的配置目录:在大多数 Linux 发行版中,Apache 的配置文件存储在“/etc/apache2/sites-available/”目录中。 例如:

 cd /etc/apache2/sites-available/

创建虚拟主机文件:使用文本编辑器(例如 nano 或 vi)创建新的配置文件。 例如:

 sudo nano example.com.conf

输入上述命令后,将出现以下文件:

配置虚拟主机:在文件中,使用<VirtualHost>指令定义 IP 地址和端口以接受特定虚拟主机的请求。 对于一个基本示例,允许默认HTTP端口(端口 80)上的所有 IP 地址,请使用以下命令:

 <VirtualHost *:80>    ServerName site1.com    ServerAlias www.site1.com     ServerAdmin [email protected]    ErrorLog ${APACHE_LOG_DIR}/error.log    CustomLog ${APACHE_LOG_DIR}/access.log combined    ProxyPass / http://127.0.0.1:8080/    ProxyPassReverse / http://127.0.0.1:8080/    ProxyRequests Off </VirtualHost>

配置过程首先使用<VirtualHost>命令定义虚拟主机,指定 Apache 接受的 IP 地址和端口号。 在本例中,使用通配符 * ,允许接受所有 IP 地址,而端口号设置为80 ,代表默认 HTTP 端口。 接下来,配置还包括以下几项:

  • ServerName :该指令指定与服务器关联的域名。
  • ServerAlias:使用 ServerAlias,您可以定义服务器可接受的其他名称。
  • ServerAdmin :ServerAdmin 指令设置服务器在返回给客户端的错误消息中包含的联系电子邮件地址。
  • ErrorLog :ErrorLog 设置 Apache 存储遇到的错误的文件的名称。
  • CustomLog: CustomLog 设置 Apache 将客户端请求记录到服务器的文件的名称。
  • ProxyPass: ProxyPass 将远程服务器映射到本地服务器的空间,并定义流量重定向的目标地址。 它允许 Apache 充当反向代理,将请求转发到后端服务器并增强应用程序性能和负载分配。
  • ProxyPassReverse: ProxyPassReverse 对于代理服务器至关重要,因为它会使用代理服务器的信息重写后端服务器的原始位置、内容位置和 URI HTTP 响应标头。 这可确保反向代理正确处理响应并防止后端服务器暴露于直接 Internet 访问。
  • ProxyRequests: ProxyRequests 防止 Apache HTTP 服务器被用作转发代理,从而增强安全性。 使用 ProxyPass 时通常应将其设置为“关闭”,以避免将服务器误用作开放代理并防止潜在的安全风险。

保存并退出:保存更改并退出文本编辑器。

启用虚拟主机:使用 a2ensite 命令启用新的虚拟主机配置:

 sudo a2ensite example.com.conf

重新加载 Apache:要应用更改,请重新加载 Apache 以激活新的虚拟主机:

 sudo systemctl reload apache2

完成这些步骤后,新的虚拟主机现已激活并准备为其指定的网站或应用程序提供服务。 需要注意的是,这些更改只有在启用虚拟主机并重新加载 Apache 后才会生效。 此外,您可以将网站的文件放置在“DocumentRoot”指令指定的目录中,以确保 Apache 为该特定虚拟主机正确提供内容。

验证配置:确保反向代理配置按预期工作。 在Web浏览器中访问指定的域名(例如“reverse-proxy.example.com”) ,Apache应该正确地将请求转发到后端服务器。

请记住,您可能需要根据特定用例配置其他设置,例如处理SSL 证书、负载平衡WebSocket 代理。 定期监控服务器的性能和安全性,确保平稳运行。

如何在 Cyber​​panel 中使用 Apache 作为反向代理

在 Cyber​​panel 中, Apache与后端 OpenLiteSpeed 的集成提供了两全其美的方案,将 OpenLiteSpeed 的速度优势与 Apache 丰富的功能相结合。 值得注意的是,利用 Apache 作为反向代理不会影响 ls 缓存的性能; 您将保持与单独使用OpenLiteSpeed相同的性能水平。 在此配置中,OpenLiteSpeed 仍然负责将前端流量传递到 Apache,后者处理来自后端的请求。 此外, AlmaLinuxUbuntu操作系统都支持这种集成。 通过阅读本文,用户可以充分利用在反向代理设置中结合 Apache 和 OpenLiteSpeed 所带来的优势。

登录到您的 Cyber​​panel 仪表板。

转到网站选项单击创建网站

输入您的域名、电子邮件地址和 PHP 版本,然后选择 Apache 作为反向代理。 输入详细信息后,单击“创建网站”。 可能需要一些时间,然后就会被创建

该网站将在 Apache 中作为反向代理模式工作。 Openlitespeed 将在前端运行,而后端将运行 Apache。 因此,无论您使用的是 Cpanel 还是任何其他控制面板,所有 htaccess 规则都将像以前一样工作

可以看到站点创建成功了。

对于此站点,您可以在我们的网站管理器中管理此站点的 Apache 配置。 单击管理

到达这里后,单击Apache Manager

甚至您也可以切换到纯 Openlitespeed。 假设您决定不想在该网站的后端使用 Apache。 如果您想切换到纯 Openlitespeed ,请选择PHP 版本,然后单击切换到纯 Openlitespeed。 如果使用 OpenLitespeed,也可以转换为使用 Apache

这些是 Apache 配置。 如果您想编辑某些内容,您可以轻松编辑,但请确保您知道自己在做什么,因为此处出现问题,您的网站将停止工作

在我们的 Apache 配置中,我们使用 PHP-FPM,因此这些是您正在使用的 PHP-FPM 配置

对于 PHP 配置转到PHP单击编辑 PHP 配置。 如果你想编辑 PHP 配置。

如果您使用 Apache,那么您还需要编辑 Php 配置,因此如果您安装了 Apache,您将看到此 URL。

默认情况下,您将能够编辑 Litespeed Php 的配置。 如果您想编辑 Apache 的配置,请单击“编辑 APACHE 配置”

单击“编辑 APACHE 配置”后,您可以使用 Litespeed 配置进行任何使用,例如 post_max_size、upload_max_filesize、max_execution_time 或其他。

编辑配置后确保单击“保存更改”

同样,您也可以使用高级编辑

同样,您可以安装 Apache 的 PHP 扩展。 只需点击PHP->安装扩展

如果您使用 Apache,那么您还需要管理 APACHE 扩展,因此如果您安装了 Apache,您将看到此 URL。  

默认情况下,您将能够安装 Litespeed Php 的扩展。 如果您想安装 Apache 扩展,请单击管理 APACHE 扩展

相关内容

您还可以查看我们关于Apache 与 NGINX谁在性能方面获胜?