AWS 应用程序部署基础知识:安装NGINX

译文
开发
在这篇文章中,我们将设置 NGINX 并将其用作 AWS 云中的反向代理。

【51CTO.com快译】

介绍

在本系列“AWS应用程序部署基础”的前一篇文章中,我们建立了PostgreSQL数据库,然后通过Node.JS应用程序连接到它。

但是,Nodejs应用程序正在同一台计算机上运行,数据库访问是本地的。这是一个完全有效的设置,因为它在同一台机器上,所以访问很简单。但是,在不同的机器上运行应用程序和数据库是一种非常常见的设置,我们将在本系列的后面部分介绍这条路径。今天,我们将主要关注我们希望在公共子网中的 EC2 实例上运行的 Web 服务器。

如果您还记得我们的 VPC 设置,我们还有一个公共 EC2 实例,我们目前将其用作 Bastian 服务器(又名跳转主机)和 NAT 实例。现在,是将它用作 NGINX Web 服务器。这是一个 Amazon Linux EC2 实例。

在现实生活中,可能希望在单独的 EC2 实例上运行 NGINX,但是,过程是相同的,为了节省一些时间和成本,我将使用已经运行的 EC2 实例(公共子网)。

架构图

下面是更新的图表,显示了将要设置的 NGINX。

在 Amazon Linux EC2 上安装 NGINX

1. SSH 到 Bastian 服务器(公共 Amazon Linux EC2 实例)

  1. ssh -i ./fm-keypair.pem ec2-user@ip-address-machine //SSH to Bastian Server 

2. Amazon Linux 上的更新包

  1. sudo yum update // (ubuntu) sudo apt-get update 

3. 在Amazon Linux 上安装 NGINX

  1. sudo yum install nginx // (Ubuntu) sudo apt-get install nginx 

4. 使用 Bash 测试安装

安装完成,测试一下,以确认可以正在工作。

  1. nginx -v  
  2. sudo service nginx status 

这是操作的输出:

访问Web服务器

NGINX 通常带有一个默认的网站和配置文件,配置为提供默认的网站。

因此,可以使用 curl 在本地访问这个网站:

根据结果,可以看到接收到了默认网站的 HTML。实际上,如果我们看到了附加到这个实例的安全组,那么:

也可以看到安全组已经配置了入站 HTTP 规则,从而可以从世界任何地方访问此网页。接下来,试一下在 Web 浏览器中使用 Bastian-host(与 NGINX 相同的 EC2)的 Elastic-IP 访问它:

连接 NGINX 与 Node.js 应用程序

接下来做个简单的测试,使用 NGINX 反向代理功能将 NGINX 与 Node.js 应用程序连接起来:

这样,就可以在 PostgreSQL 中获取产品数据了。

准备 Node.JS 应用程序

使用PM2来运行Nodejs 应用程序,PM2 将在后台继续运行节点服务器。

在私有子网中的 EC2 上安装 PM2(Node.JS 应用程序运行和运行应用程序的地方):

  1. 1. ssh to ubuntu EC2  
  2. 2. sudo npm install pm2 -g     // Install pm2  
  3. 3. pm2 start server.js    // Run the Server app 

输出结果为:

pm2的其他相关指令如下:

  1. >> pm2 stop server.js  
  2. >> pm2 restart server.js 

另外,在 pm2 网站上还可以查找更多命令。

让我们看看私有子网中连接到 Ubuntu EC2 机器的安全组:

因此,所有来自公共子网的流量都是允许的。在这一点上,我想做的另一项测试是查看是否可以从公共子网(Bastian-host)中的 EC2 实例访问 Node.JS 应用程序。

可以看到,如预期的那样,我们能够从公共 EC2 机器与 Node 应用程序(在私有 EC2 端口 3000 上运行)进行通信。

接下来,设置 NGINX 反向代理。

NGINX 配置

尽量保持细节简单和基本,可以在网上找到有关各种配置的更多信息。

更新 Nginx 配置文件以进行代理配置:

  1. sudo nano /etc/nginx/nginx.conf 

在 nano 编辑器中打开配置文件,向下滚动直到看到一个服务器块,点击为节点应用程序添加位置 和代理路径信息,如下所示(请注意在端口 3000 上运行 Node.JS 应用程序的 Ubuntu EC2 机器的私有 IP 地址):

  1. location /nodeapp/{   proxy_pass http://10.0.2.99:3000/; } 

这是公共 EC2 实例上的 Nginx 配置文件。

按 Ctrl+X 保存并关闭文件,重新启动 NGINX 服务。

  1. sudo service nginx restart 

现在,让我们尝试使用浏览器访问节点应用程序端点:

可以看到,我们能够收到预期的数据。

以下是当前工作负载的更新图表:

NGNIX 是一个轻量级且易于使用的 Web 服务器。可以向运行在不同EC2实例上的不同服务引入多个位置块和代理调用。

总结

在本文中,我们在公有子网中的 EC2 实例上安装了 NGINX。然后进行反向代理配置,将来自上一个post的请求传递给Node.JS应用程序,因为该应用程序可以连接到 PostgreSQL 数据库,所以我们可以通过 HTTP 访问数据。

 

这是一个非常基本的、常见的web服务器、应用程序和数据库设置,在下一篇文章中,我们将添加更多应用程序、配置并根据需要增强此设计。

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

责任编辑:梁菲 来源: AZone
相关推荐

2015-02-02 15:46:59

Web应用架构大数据

2010-01-19 10:16:40

C++程序

2012-10-29 13:52:51

应用虚拟化

2011-05-27 16:23:39

SEO

2012-05-21 10:39:52

RAID

2009-08-05 10:16:54

部署ASP.NET应用

2020-12-11 19:06:03

Kubernetes工具应用程序

2011-05-31 13:34:22

应用开发iPad

2018-10-23 09:58:23

ApacheNGINXWeb

2021-09-02 18:47:02

redis存储中间件Remote Dict

2012-05-11 11:36:14

RAID基础知识

2010-02-01 13:07:21

2010-07-07 15:11:39

H.323协议

2010-12-15 16:17:59

服务部署

2009-11-25 10:22:28

Linux应用程序安装

2009-08-14 17:08:00

Android应用程序

2021-05-06 11:19:48

应用程序泄漏AWS密钥

2015-06-01 13:35:43

数据中心DCIM

2010-07-16 10:53:30

Perl基础

2009-04-17 14:22:40

XPathXML基础
点赞
收藏

51CTO技术栈公众号