文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-12-03 03:04

关注

介绍

在本系列“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内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯