博客 | NGINX

教程: 在 AWS 中将 NGINX 和 NGINX Plus 设置为 Web 服务器和反向代理

NGINX-F5-horiz-black-type-RGB 的一部分
Aidan Carson 缩略图
艾丹·卡森
2021 年 11 月 12 日发布

自 15 年前推出以来,NGINX 的受欢迎程度稳步提升,目前已成为世界上最受欢迎的 Web 服务器,为超过[ngx_snippet name='number-sites'] 个网站提供支持。 在这种情况下,我们认为跟随大众并使用 NGINX 满足您所有的Web 服务需求是明智之举,此外还可以利用其作为反向代理内容缓存负载均衡器API 网关等的功能。

这篇博文将指导您如何在 Amazon Web Services(AWS)上的 Ubuntu 20.04 上启动并运行 NGINX,此设置易于使用,不会影响您个人计算机上的设置。 它涵盖NGINXNGINX Plus ,这是具有附加企业级功能的商业支持版本。

完成此处给出的步骤后,您可能希望继续参加 NGINX Core 培训(讲师指导按需),这是一门全天课程,您将学习如何配置、管理和管理 NGINX。本课程还可以帮助您为其他高级主题的讲师指导和自定进度课程做好准备。

本教程包含以下任务的说明:

访问终端

对于本教程,您需要一个终端来连接到您的Amazon Elastic Compute Cloud (EC2) 实例。 Mac 有内置终端,但 Windows 用户需要下载 PuTTY 或同等工具。 如果您更喜欢使用自己的本地终端来设置 NGINX 或 NGINX Plus 并提供 Web 内容,请随意跳至设置 AWS

在 MacOS 上访问终端

在 Mac 上,您可以使用内置终端工具完成本教程中的所有操作。

  1. 单击屏幕顶部栏右端的放大镜图标。

  2. 在弹出框中输入terminal ,然后按Enter键。 将打开一个单独的终端窗口。

在 Windows 上访问终端

Windows 没有内置终端,因此您需要从互联网上下载一个。 除了 AWS,我们还推荐 PuTTY,一个全球使用的ssh客户端。

  1. 访问PUTTY下载页面

  2. 下载该文件并将其安装到您选择的位置,然后打开它。 但是,直到完成设置 AWS中的步骤之前,您无法访问实际终端。

设置AWS

在本教程中,我们假设您有一个Amazon 虚拟私有云(VPC),并且可以简单地使用大多数帐户创建的默认 VPC 配置。 在本节中,您将通过创建 EC2 实例并连接到它来设置您的 AWS 部署。

笔记: 创建 EC2 实例的以下步骤和屏幕截图在撰写本文时已经过验证,但可能会被 AWS 更改。 根据需要调整说明。

  1. AWS 主页上,登录(AWS 管理)控制台,或者如有必要,先创建一个新账户。

  2. 单击控制台标题栏中的“服务” ,然后单击“计算”部分中的“EC2”

    屏幕截图显示了 AWS“服务”页面上“EC2”的选择

  3. 单击打开的 EC2 仪表板页面上的启动实例按钮。

  4. 步骤1页面中,点击Ubuntu Server 20.04 LTS (HVM)、SSD卷类型行中的选择按钮,保持默认的64位(x86)架构选择。

    Amazon EC2 实例创建向导中“步骤 1”页面的屏幕截图

  5. 第 2 步页面上,选择t2.micro实例类型,在撰写本文时,该类型标记为符合免费套餐条件并被默认选中。 单击下一步: 配置实例详细信息按钮。

    Amazon EC2 实例创建向导中“步骤 2”页面的屏幕截图

  6. 步骤 3页面上,确保在网络字段中选择了要使用的 VPC,并且自动分配公有 IP字段设置为默认的使用子网设置(启用)启用。 其余设置保留默认设置。

    Amazon EC2 实例创建向导中“步骤 3”页面的屏幕截图

  7. 单击6。 配置安全组 在页面顶部。

  8. 步骤 6页面上,执行以下步骤以允许传入的 HTTP 和 HTTPS 流量(默认情况下,EC2 实例仅接受 SSH 流量):

    • 单击表格下方的添加规则按钮,然后从类型列的下拉菜单中选择HTTP 。 出于本教程的目的,我们允许从任何 IP 地址进行访问(列中的值为Anywhere 0.0.0.0/0, ::/0 )。 对于生产环境,我们建议您遵循页面上的警告,该警告要求使用安全组来控制访问。

    • HTTPS重复上一步。

    • 单击页面底部的“审核并启动”按钮。

    Amazon EC2 实例创建向导中“步骤 6”页面的屏幕截图

  9. 第7步页面,点击底部的启动按钮。

  10. 在弹出的框中,创建一个新的密钥对:

    • 从上方下拉菜单中选择创建新密钥对

    • 选择密钥对类型。 在本教程中,我们选择RSA

    • 密钥对名称字段中输入名称,例如NGINX_key

    • 单击下载密钥对按钮。

    • 如下面的动画截图所示,复选框取代了“下载密钥对”按钮。 单击它表示您可以访问私钥。

    • 单击启动实例按钮。

    Amazon EC2“选择现有密钥对或创建新密钥对”弹出窗口的屏幕截图

  11. 在文件管理器实用程序中,将下载的.pem文件(在教程中为NGINX_key.pem )移动到安全位置。 对于本教程,我们将其放在/Desktop/NGINX目录中。

  12. 如果使用 Windows 终端,请按照AWS 说明下载 PuTTYgen 实用程序并将.pem文件转换为.ppk文件。

  13. 启动状态页面,单击底部的查看实例按钮。

  14. 在打开的“实例”页面上,新实例出现在表中。 命名:

    • 单击名称列中的铅笔图标。

    • “编辑名称”弹出框中键入名称,然后单击“保存”按钮。

    Amazon EC2“实例”页面的屏幕截图,显示实例名称的编辑

  15. 单击屏幕顶部的“连接”按钮。 弹出如下窗口。 打开SSH 客户端选项卡并按照说明连接到实例。 如果使用 Windows,请在命令中用.ppk替换.pem

    Amazon EC2“连接到实例”弹出窗口的屏幕截图

安装 NGINX 软件

现在您的 AWS 环境已设置完毕,是时候安装NGINX Open SourceNGINX Plus了,您可以免费试用 30 天。 这两个选项都适用于本教程,但如果您想进一步探索NGINX Plus中的高级功能,请申请免费试用。

安装NGINX开源

大多数 Linux 发行版和 BSD 变体都在其标准软件包存储库中提供 NGINX 开源,但它通常不是最新版本。 我们建议直接从nginx.org下载 NGINX 开源。 将 NGINX 存储库添加到 Ubuntu 包管理器( apt )只需几个额外步骤。

要安装 NGINX 开源,请按照以下步骤操作:

  1. 访问您的终端。

  2. 下载 NGINX 签名密钥:

    $ sudo wget http://nginx.org/keys/nginx_signing.key
  3. 添加密钥:

    $ sudo apt-key 添加 nginx_signing.key
  4. 将目录更改为/etc/apt

    $ cd /etc/apt
  5. 编辑sources.list文件,在末尾附加以下文本:

    deb http://nginx.org/packages/ubuntu focal nginx
    deb-src http://nginx.org/packages/ubuntu focal nginx

    笔记: 每行中的焦点关键字对应于 Ubuntu 20.04。 如果您使用的是不同版本的 Ubuntu,请替换其发布代号的第一个单词(例如,Ubuntu 18.04 的版本为bionic )。

  6. 更新 NGINX 软件:

    $ sudo apt-get 更新
  7. 安装NGINX:

    $ sudo apt-get 安装 nginx
  8. 出现提示时输入Y。

  9. 启动NGINX:

    $ sudo systemctl 启动 nginx.service
  10. 检查其状态:

    $ sudo systemctl status nginx.service
  11. 继续打开您的网页

安装 NGINX Plus

  1. 如果您还没有 NGINX Plus,请注册 30 天免费试用

  2. 当您收到试用订阅可用的电子邮件通知时,请按照提供的说明下载安全证书、私钥和 JWT,然后安装 NGINX Plus。

  3. 安装完成并且 NGINX Plus 运行时,继续打开您的网页

打开你的网页

现在您已经启动了 NGINX 软件,在配置 NGINX 和 NGINX Plus 以提供您网站的内容之前,请先查看它们默认提供的网页。 请按以下步骤操作:

  1. 如果您还没有到达,请导航至 EC2 仪表板上的“实例”选项卡。 (一种方法是单击顶部控制台导航栏中的“服务”计算部分中的“EC2”以及左侧导航栏中的“实例” 。)

  2. 在表中向右滚动,直到您可以在公有 IPv4 地址列中看到实例的公有 IP 地址(在屏幕截图中,它是 3.22.51.xxx)。 选择地址并将其复制到粘贴缓冲区。

    Amazon EC2“实例”页面的屏幕截图,其中显示了实例的“公共 IPv4 地址”字段

  3. 打开新的浏览器标签并将地址粘贴到地址栏中。 出现默认的“欢迎使用 nginx!”页面,表明 NGINX 已安装并正在运行,但尚未配置。

    欢迎页面确认您的 NGINX 反向代理和 Web 服务器已启动并正在运行

设置示例文件

安装好 NGINX 或 NGINX Plus 的工作版本后,就可以好好利用它了! 首先设置一些文件和目录。

  1. 如果您尚未到达主目录,请将目录更改为主目录。 在以下说明中,它是/home/ubuntu

  2. 创建一个名为public_html的目录并进入该目录。

  3. public_html目录中,创建一个名为index.html的文件和一个名为application1的目录。

  4. application1目录中,创建一个名为app1.html的文件,其中包含一些文本。

  5. 改回你的主目录。

  6. 创建一个名为data的目录。

  7. 数据目录中,创建一个名为images的目录。

提供页面和图像

我们对 NGINX 或 NGINX Plus 的第一个用例是通过网页向用户提供页面和图像。

  1. 将目录更改为/etc/nginx/conf.d

  2. default.conf重命名为default.conf.bak ,以防止 NGINX 或 NGINX Plus 将其用作默认配置文件。

  3. 创建一个名为server1.conf的文件,其中包含以下配置:

    服务器 { root /home/ubuntu/public_html;
    
    位置 /application1 { }
    
    位置 /images { 
    root /home/ubuntu/data; 
    }
    }

    指令文档: locationrootserver

  4. 将目录更改为~/data/images

  5. 找到您想要提供的图像并将其复制到目录( 〜/ data / images )。 举例来说,以下命令复制NGINX 徽标

    $ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
  6. 重新加载 NGINX 或 NGINX Plus:

    $ sudo nginx -s 重新加载
  7. 在 Web 浏览器中请求此 URL 处的图像,其中NGINX-server是您的 EC2 实例的公共 IP 地址:

    https:// NGINX-服务器/images/NGINX-logo.png

  8. 还可以访问该应用并观察您得到的内容:

    https: //NGINX-server/application1/app1.html

设置代理服务器

现在您已经有了一个可以运行的 Web 服务器,接下来就该学习如何配置它来路由流量了。 此功能使您能够将流量传递到其他服务器,这是设置负载均衡的重要一步。 请按以下步骤操作:

  1. ~/data目录中,创建一个名为server2的目录。

  2. server2目录中,创建一个名为sampleApp的目录。

  3. sampleApp目录中,创建一个名为index.html的文件,其中包含一些文本。

  4. 将目录更改为/etc/nginx/conf.d

  5. 创建一个名为server2.conf的文件,其中包含以下配置:

    服务器 { 监听 8080;
    root /home/ubuntu/data/server2;
    }

    指令文档: listenrootserver

  6. 修改server1.conf ,在第一个位置块中添加proxy_pass指令,如下所示:

    服务器 { root /home/ubuntu/public_html;
    
    位置 /application1 {
    proxy_pass http://localhost:8080/sampleApp;
    }
    
    位置 /images {
    root /home/ubuntu/data;
    }
    }

    指令文档: locationproxy_passrootserver

  7. 重新加载 NGINX 或 NGINX Plus:

    $ sudo nginx -s 重新加载
  8. 在浏览器中访问以下 URL,并观察与在“服务页面和图像”中访问时相比有哪些变化:

    https: //NGINX-server/application1/index.html

就这样! 您现在有一个运行 NGINX 的 Ubuntu 实例,可以作为代理服务器运行。

有关在 AWS 上部署 NGINX 和 NGINX Plus 以满足更多用例的说明,请参阅我们的部署指南

结论

在本教程中,您学习了如何设置 NGINX 或 NGINX Plus 以通过 Internet 提供文件和图像,并充当反向代理。 如果您想更深入地了解 NGINX,我们提供 NGINX Core 培训课程(讲师指导按需),其中涵盖本教程的主题以及 Web 服务和应用交付的更多基础知识,包括负载均衡、基于位置的路由和安全性。 还请查看nginx.org上的文档NGINX Plus 管理指南- 除非另有说明,这些文章适用于 NGINX 开源以及 NGINX Plus。


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”