如何在 Docker 上部署 NGINX 反向代理?


简介

NGINX 是一款流行的开源 Web 服务器,它也充当反向代理、负载均衡器和 HTTP 缓存。反向代理是位于 Web 服务器前面的服务器,并将客户端请求转发到相应的后端服务器。

使用 NGINX 反向代理的好处包括提高安全性、可扩展性和性能。通过充当客户端和服务器之间的中间体,NGINX 还可以提供其他功能,例如缓存、SSL 终止和内容压缩。

在本文中,我们将讨论如何在 Docker 上部署 NGINX 反向代理——一个允许开发人员轻松创建、部署和运行容器中应用程序的平台。通过在 Docker 上部署 NGINX 反向代理,我们可以在利用其优势的同时,也受益于容器化提供的可移植性和隔离性。

我们将涵盖您需要了解的所有内容,以设置在 Docker 上部署 NGINX 反向代理的环境——包括先决条件、NGINX 和 Docker 的配置选项——以及您可以执行的测试场景以确保一切正常运行。无论您是这两个技术的初学者,还是只是寻找简化部署过程并同时提高性能的方法,本文都能满足您的需求!

设置 Docker 环境

设置

在 Docker 上部署 NGINX 反向代理之前,我们必须首先设置 Docker 环境。Docker 是一个基于容器的平台,允许在容器内创建和部署应用程序,提供了一种有效的方式来打包和分发软件。要开始设置我们的 Docker 环境,我们必须首先在我们的系统上安装 Docker。

安装说明因您的操作系统而异,但可以在网上轻松找到。安装完成后,我们必须创建一个新目录,用于存储反向代理部署所需的所有文件。

组件

设置 Docker 环境需要几个组件,这些组件将用于部署 NGINX 反向代理。这些包括 -

  • **Docker 引擎**− **这是 Docker 平台的核心组件,负责运行容器。

  • **Docker Compose**− **此工具允许我们轻松定义和运行多容器应用程序。

  • **NGINX 镜像**− **我们需要从官方存储库或其他地方拉取或构建 NGINX 的镜像,以便将其用作我们的反向代理服务器。安装完这些组件后,我们可以继续配置在新建的 Docker 环境上部署 NGINX 反向代理所需的文件。

配置 NGINX 反向代理

配置说明

设置 Docker 环境后,是时候配置 NGINX 反向代理了。配置文件决定服务器如何处理传入的 HTTP 请求。

示例配置文件是配置您自己的文件的良好起点。首先,打开文本编辑器并创建一个名为 nginx.conf 的新文件。

配置文件由不同的块组成,例如 http、upstream、server 和 location 块。http 块包含全局设置,例如超时和代理缓冲设置。

server 块包含特定虚拟主机或域名特定的设置。这些特定设置包括 SSL 证书路径和重定向规则。

可在 NGINX 配置文件中配置的设置

NGINX 反向代理可以使用多种设置进行配置 -

  • Proxy_pass − 此设置允许您指定将请求转发到的后端服务器。

  • Proxy_cache − 此设置允许您将来自上游服务器的响应保存到磁盘上,以便在将来的请求中快速提供服务。

  • Add_header − 此设置允许您向服务器生成的所有响应添加自定义标头。

  • Gzip − 此设置启用或禁用服务器生成的响应上的 gzip 压缩。

  • Ssl_certificate − 此设置指定在保护客户端和服务器之间流量时应使用的 ssl/tls 证书。

NGINX 配置文件中还有许多其他选项,可让您微调反向代理的操作方式。在生产环境中部署它们之前,务必测试不同的配置。您可以使用 Postman 或 cURL 命令等工具来测试通过 NGINX 反向代理发出的请求。

部署和运行容器

使用 Docker Compose

根据上一节配置 NGINX 反向代理后,下一步是使用 Docker Compose 部署它。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。

它允许您在一个 YAML 文件中定义构成应用程序的所有容器及其配置选项,从而简化应用程序的部署和管理。要使用 Docker Compose,您首先需要在项目目录中创建一个 `docker-compose.yml` 文件。

此文件将指定构成应用程序的所有容器及其配置选项。以下是此文件对于 NGINX 反向代理可能的样子 -

version: '3' services: 
nginx: image: nginx 
volumes: - ./nginx.conf:/etc/nginx/nginx.conf 
ports: - "80:80" - "443:443"  

在此示例中,我们定义了一个名为 `nginx` 的单个服务,该服务使用来自 Docker Hub 的官方 `nginx` 镜像。

我们使用卷挂载将本地 `nginx.conf` 文件映射到容器的 `/etc/nginx/nginx.conf` 目录中,这将允许我们根据需要自定义 NGINX 配置。我们将主机机的端口 `80` 和 `443` 映射到容器上的这些端口。

运行容器时可用的选项

使用 Docker Compose(或任何其他方法)运行容器时,可以使用许多不同的选项来微调其行为。其中一些选项包括 -

  • 端口映射 − 如我们上面示例所示,您可以将主机机上的端口映射到容器上的端口,以便适当地路由流量。- 卷挂载:您可以将本地目录或文件挂载到容器中,以提供对数据或配置文件的访问。

  • 环境变量 − 您可以设置将在容器内部可用的环境变量,这些变量可用于自定义其行为。- 重启策略:您可以为容器指定重启策略,该策略将决定如果它意外崩溃或退出会发生什么。

  • 资源限制 − 您可以限制容器允许使用的 CPU、内存或其他资源的数量。通过了解和利用这些选项,您可以创建高度定制且高效的 Docker 部署,以满足应用程序的特定需求。

结论

在 Docker 上部署 NGINX 反向代理起初看起来可能令人生畏,但通过遵循本文中概述的这些简单步骤,可以轻松有效地完成。凭借其灵活性和可扩展性功能,它是寻求优化其 Web 应用程序性能和安全性的企业的绝佳解决方案。即使在部署过程中可能会出现一些问题,例如端口映射或 DNS 解析错误,但大多数问题都有简单的解决方案。

通过将 NGINX 反向代理与 Docker 强大的容器化技术结合使用,企业可以提高可靠性和节省成本,同时提高其 Web 应用程序的性能和安全性。我们希望本文提供了足够的信息,以帮助您轻松地在 Docker 上部署 NGINX 反向代理!

更新于: 2023年7月10日

327 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告