如何使用SSL/TLS加密安装和配置Apache反向代理服务器
什么是反向代理?反向代理服务器是位于后端服务器前面的中间连接点,它将客户端请求路由到这些服务器,并确保没有客户端直接与后端通信。这与转发代理不同,在转发代理中,代理位于客户端前面,并充当客户端和源服务器之间的中介。反向代理就像一个实际的端点,为您的系统提供额外的安全和控制层。,,反向代理是基本的系统管理概念之一,可以帮助您提高系统的可伸缩性、性能、弹性和安全性。让我们来看看一些最流行的反向代理用例。,在我们开始之前,您需要:,在本指南中,我们将使用 Apache Web 服务器来创建反向代理的工作概念。Apache 带有一些方便的扩展模块,支持反向代理解决方案。 首先,连接到您的服务器并从 APT 存储库更新本地包索引:,现在让我们apache2从官方 Ubuntu 20.04 存储库安装软件包:,安装完成后,您可以通过检查其版本来验证 Apache 是否已安装:,,也可以apache2使用以下命令检查状态:,,如您所见,apache2 在您安装后立即处于活动状态并正在运行。您可以通过请求默认的 Apache 索引页面来执行抽查以验证它是否按预期工作。只需在网络浏览器中输入服务器的 IP 地址,然后按回车键:,,如果您不知道自己的 IP 地址,请使用以下命令获取它:,此命令将显示计算机上可用的所有网络接口上的所有已配置 IP 地址,包括公共网络接口的 IP 地址。,要将反向代理与 Apache Web Server 一起使用,您需要启用特定的 Apache 模块以支持反向代理服务器所需的附加功能。我们的场景需要以下模块:,现在让我们使用a2enmod命令启用这些模块:,每次启用新的 Apache 模块时,不要忘记重新启动 apache2 服务器:,您可以使用以下命令验证这些模块是否处于活动状态:,现在是时候配置 Apache 反向代理以接受来自 Internet 的请求并将它们转发到您选择的资源。您可以将反向代理请求转发到任何您想要的地方,包括其他服务器,但我们将使用本地网络用于教育目的。,000-default.conf首先,让我们使用以下命令禁用默认的 Apache 虚拟主机配置文件:,现在使用以下配置文本cherry.conf在目录中创建一个新的虚拟主机配置文件:/etc/apache2/sites-available,<VirtualHost>我们使用包含 IP 地址和 Apache 为该虚拟主机接受的端口号的命令开始我们的配置文件。在这种情况下使用元字符*,因为所有 IP 地址都被接受,而端口号80代表默认的 HTTP 端口。配置继续以下项目:,保存配置文件并使用以下命令启用新的虚拟主机:,配置完成后,不要忘记重新启动 apache2 以激活更改:,您的反向代理配置现已完成,但我们仍然缺少一个将在端口 8080 上侦听的 Web 应用程序,因为我们的ProxyPass指令将传入请求转发到此目的地。 为此,我们可以使用一个简单的 Flask 应用程序。让我们先安装 python3 和 pip 包管理器:,安装完成后,继续通过pip安装Flask:,现在我们准备创建一个简单的 Flask Web 应用程序。让我们称之为app.py:,在下面的 Python 代码中,我们导入 Flask 库,实例化 Flask 应用程序并在“/”路由上调用 index() 函数:,将 Python 脚本保存在您的工作目录中,并将 FLASK_APP 环境变量设置为 app.py,以便 Flask 知道在哪里实例化您的 Web 应用程序:,现在您已准备好运行您的 Flask 应用程序。让我们通过将标准输出和标准错误输出重定向到文件来作为后台作业在端口 8080 上运行它/dev/null以保持我们的终端清洁:,现在打开浏览器并尝试通过标准 HTTP 80 端口连接到您的 IP 地址:,,您刚刚向 IP 地址上的端口 80 发送了一个 HTTP GET 请求,并且您的请求已被 Apache 反向代理转发到端口 8080,您的 Flask 应用程序在此处发回响应。恭喜,您的 Apache 反向代理配置正在运行!,通常,您希望对您的应用程序流量进行 SSL 加密。您可以使用免费的 Let’s Encrypt TLS 证书使用 Apache 反向代理配置 SSL/TLS 加密。 首先,安装允许您自动颁发和安装证书的 Certbot ACME 客户端:,接下来,为 Certbot 安装...