自 NGINX 推出以来,15年里其人气一直稳步上升,现已成为世界上最受欢迎的 Web 服务器,并为 4 亿多个网站提供支持。因此,我们建议您相信大众的判断,使用 NGINX 来满足所有 web 服务需求,也可以将 NGINX 用作 反向代理、内容缓存、负载均衡器、API 网关等等。
本文将指导您在亚马逊云科技 (AWS)环境中Ubuntu 20.04的平台上安装和运行 NGINX。这些设置步骤非常简便,不会影响您个人电脑的设置。本文涵盖了 NGINX 和 NGINX Plus(包含更多企业级功能的商业版本)的教程。
如果您想深入了解 NGINX,请查阅获取包括博客文章、电子书、视频课程等更多学习资源。
本教程包含以下步骤:
访问终端
在本教程中,您需要通过一个终端来连接到 Amazon Elastic Compute Cloud (EC2) 实例。Mac 自带内置终端,但 Windows 用户需要下载 PuTTY 或类似工具。如果您更喜欢使用自己的本地终端来设置 NGINX 或 NGINX Plus 及提供 Web 内容,请直接跳至下方“设置 AWS”的部分。
在 MacOS 上访问终端
在 Mac 电脑上,你可以使用内置的 terminal 工具完成本教程中的所有操作。
-
点击屏幕顶栏右侧的放大镜图标。
-
在窗口中输入
terminal
,然后按 Enter 键。这时会打开一个独立的终端窗口。
在 Windows 上访问终端
Windows 没有内置终端,所以您需要从网上下载一个。我们推荐使用 PuTTY,这是一款全世界都在使用的 ssh
客户端。
-
访问 PUTTY 下载页面。
-
下载文件并将其安装在您选择的位置,然后打开它。注意,您只有在完成下方“设置 AWS”中的步骤之后,才可以访问实际的终端。
设置 AWS
在本教程中,我们假设您拥有 Amazon Virtual Private Cloud(VPC),并且可以轻松使用默认 VPC 配置。在本部分,您将通过创建 EC2 实例并与其连接来设置AWS部署。
注: 以下 EC2 实例的创建过程和屏幕截图在撰写本文之时已经过验证,但AWS随时可能会更改。因此,请根据实际情况进行必要调整。
-
在 AWS 主页上,登录(AWS Management)控制台,或者先创建一个新账户(如有必要)。
-
点击控制台标题栏中的 服务(Services),然后点击 计算(Compute) 部分的 EC2。
-
点击打开的 EC2 仪表盘页面上的启动实例(Launch Instance)按钮。
-
在第一步的页面上,点击 Ubuntu Server 20.04 LTS (HVM), SSD Volume Type 行中的选择(Select)按钮,并默认选择 64-bit (x86) 架构。
-
在第二步页面上,选择 t2.micro 实例类型,在撰写本文之时该实例类型被标记为有可用的免费版本(Free tier eligible),并在默认情况下处于被选中的状态。点击下一步:配置实例详细信息(Next: Configure Instance Details)按钮。
-
在第三步页面上,确保在网络(Network) 字段中选中您想使用的 VPC,并将自动分配公网 IP(Auto-assign Public IP)字段设为默认的使用子网设置(启用)(Use Subnet Setting (Enable)) 或者 启用(Enable)。其余设置保持默认值即可。
-
点击页面顶部的 6. 配置安全组(6. Configure Security Group)。
-
在第六步页面上,执行以下步骤,允许传入 HTTP 和 HTTPS 流量(默认情况下,EC2 实例只接受 SSH 流量):
-
点击表格下方的添加规则(Add Rule)按钮,然后从类型(Type)列的下拉菜单中选择HTTP。在本教程中,我们允许从任何 IP 地址访问实例(来源(Source)列中的值为Anywhere 0.0.0.0/0, ::/0)。对于生产环境,我们建议您遵循页面上的警告,该警告要求必须使用安全组来控制访问。
-
重复上述 HTTPS 设置步骤。
-
点击页面底部的查看并启动(Review and Launch)按钮。
-
-
在第七步页面上,点击页面底部的 启动(Launch)按钮。
-
在弹窗中,创建一个新的密钥对:
-
从上面的下拉菜单中选择创建一个新密钥对。
-
选择密钥对类型。在本教程中,我们选择的是 RSA。
-
在密钥对名称字段中输入一个名称,例如 NGINX_key。
-
点击下载密钥对(Download Key Pair)按钮。
-
如下面的动画截图所示,下载密钥对(Download Key Pair)按钮变成了复选框。选中复选框表示您可以访问私钥。
-
点击启动实例(Launch Instances)按钮。
-
-
在文件管理器实用程序中,将下载的 .pem 文件(在本教程中为 NGINX_key.pem)移动到一个安全的位置。在本教程中,我们将其放在了 /Desktop/NGINX 目录中。
-
如果使用 Windows 终端,请按照 AWS 说明 下载 PuTTYgen 实用程序,并将 .pem 文件转换为 .ppk 文件。
-
在启动状态页面,点击页面底部的 查看实例(View Instances)按钮。
-
在打开的实例页面上14.,新实例位于表格中。为实例命名:
-
点击名称列中的铅笔图标。
-
在编辑名称弹窗中输入名称,然后点击保存(Save)按钮。
-
-
点击屏幕顶部的连接(Connect)按钮,将弹出以下窗口。打开 SSH client 选项卡,按照说明连接实例。如果使用 Windows,请使用 .ppk 替换 .pem。
安装 NGINX 软件
现在,AWS环境已设置完成,接下来将安装 NGINX 开源版 或 NGINX Plus(可免费试用 30 天)。这两个选项都可以参照本教程,但如果您想进一步探索 NGINX Plus 的高级功能,请申请免费试用。
安装 NGINX 开源版
大多数 Linux 发行版和 BSD 派生版本都在标准软件包库中提供 NGINX 开源版,但通常不是最新版本。我们建议您直接从 nginx.org.下载 NGINX 开源版。将 NGINX 仓库添加到 Ubuntu 软件包管理器(apt
)只需要几个额外的步骤。
安装 NGINX 开源版请执行下列步骤:
-
下载 NGINX 签名密钥:
$ sudo wget http://nginx.org/keys/nginx_signing.key
-
添加密钥:
$ sudo apt-key add nginx_signing.key
-
进入目录 /etc/apt。
$ cd /etc/apt
-
编辑 sources.list 文件,并在末尾添加以下文本:
deb http://nginx.org/packages/ubuntu focal nginx deb-src http://nginx.org/packages/ubuntu focal nginx
注:每行中的
focal
键字都对应 Ubuntu 20.04。如果您使用的是另一个版本的 Ubuntu,请替换其版本的 code name(例入对于 Ubuntu 18.04, 就用bionic
)。 -
更新 NGINX 软件:
$ sudo apt-get update
-
安装 NGINX:
$ sudo apt-get install nginx
-
出现提示时输入
Y
。 -
启动 NGINX:
$ sudo systemctl start nginx.service
-
检查 NGINX 状态:
$ sudo systemctl status nginx.service
-
继续打开网页(见下文)。
安装 NGINX Plus
-
如果您还没有 NGINX Plus,请注册 30 天免费试用版。
-
当您收到通知您试用订阅可用的邮件后,请按照邮件提供的说明下载安全证书、私钥和 JWT,然后安装 NGINX Plus。
-
安装完成且 NGINX Plus 运行时,继续打开网页(见下文)。
打开网页
现在您已启动了 NGINX 软件,在配置 NGINX 和 NGINX Plus 以提供网站内容之前,先查看它们默认提供的网页。操作步骤如下:
-
导航到 EC2 仪表盘上的实例(Instances) 选项卡(如果您尚未进行此操作)。(一种方法是点击顶部“控制台”导航栏中的服务(Services)、计算(Compute)部分的 EC2 及左侧导航栏中的实例(Instances)。)
-
向右滚动表格,直到在公共 IPv4 地址列中看到实例的公共 IP 地址(如下面屏幕截图中为 3.22.51.xxx)。选择地址并将其复制到粘贴缓冲区。
-
打开一个新的浏览器选项卡,并将地址粘贴到地址栏。出现默认的欢迎使用 NGINX!(Welcome to nginx!)页面,这说明 NGINX 已安装运行,但还没有进行配置。
设置示例文件
安装好 NGINX 或 NGINX Plus 后,接下来就是好好利用它了!首先可以设置一些文件和目录。
-
进入主目录(如果您尚未进行此操作)。在以下说明中,主目录为 /home/ubuntu。
-
创建一个名为 public_html 的目录并进入该目录。
-
在 public_html 目录下,创建一个名为 index.html 的文件和一个名为 application1的目录。
-
在 application1 目录下,创建一个名为 app1.html 4.的文件(写入一些文本)。
-
返回您的主目录。
-
创建一个名为 data 的目录。
-
在 data 目录下,创建一个名为 images的目录。
配置页面和图像
NGINX 或 NGINX Plus 的第一个用例是通过网页向用户提供页面和图像。
-
将目录更改为 /etc/nginx/conf.d。
-
将 default.conf 重新命名为 default.conf.bak,以防止 NGINX 或 NGINX Plus 将它用作默认配置文件。
-
创建一个名为 server1.conf 的文件,其中包含以下配置:
server { root /home/ubuntu/public_html; location /application1 { } location /images { root /home/ubuntu/data; } }
-
将目录更改为 ~/data/images。
-
找到您要提供的图像并将其复制到目录(~/data/images)。例如,以下命令复制了 NGINX 标志:
$ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
-
重新加载 NGINX 或 NGINX Plus:
$ sudo nginx -s reload
-
在一个 Web 浏览器中,请求以下 URL 的图像,其中 NGINX-server 是您的 EC2 实例的公共 IP 地址:
https://NGINX-server/images/NGINX-logo.png
-
您还可以访问该应用并观察您所得到的内容:
https://NGINX-server/application1/app1.html
设置代理服务器
您已经有了一个可以正常工作的 Web 服务器,现在可以开始学习如何配置流量路由了。该功能支持您将流量传输到其他服务器,同时也是设置负载均衡的重要一步。操作步骤如下:
-
在 ~/data 目录下,创建一个名为 server2 的目录。
-
在 server2 目录下,创建一个名为 sampleApp 的目录。
-
在 sampleApp 目录下,创建一个名为 index.html 的文件(写入一些文本)。
-
将目录更改为 /etc/nginx/conf.d。
-
创建一个名为 server2.conf 的文件,其中包含以下配置:
server { listen 8080; root /home/ubuntu/data/server2; }
-
在第一个
location
块中添加proxy_pass
指令,以修改 server1.conf,如下所示:server { root /home/ubuntu/public_html; location /application1 { proxy_pass http://localhost:8080/sampleApp; } location /images { root /home/ubuntu/data; } }
指令文档:
location
、proxy_pass
、root
、server
-
重新加载 NGINX 或 NGINX Plus:
$ sudo nginx -s reload
-
在浏览器中访问以下 URL,观察与您在“提供页面和图像” 中访问它时相比有哪些变化:
https://NGINX-server/application1/index.html
以上就是本文的全部内容!现在您有了一个运行 NGINX 的 Ubuntu 实例,并可以作为代理服务器运行了。
有关在AWS上部署 NGINX 和 NGINX Plus 的更多用例的说明,请参阅我们的部署指南。
结语
本教程介绍了如何设置 NGINX 或 NGINX Plus,以便通过互联网提供文件和图像,并且充当反向代理。如果您想深入了解 NGINX,我们还提供了 NGINX Core 培训课程(讲师授课 或 点播观看)课程涵盖了本教程的主题,以及更多关于 Web 服务和应用交付的要点,包括负载均衡、基于位置的路由和安全防护。您还可以查看 nginx.org 的文档 和 NGINX Plus 管理指南 —— (这些文章适用于 NGINX 开源版和 NGINX Plus,特别注明的除外)。