发布于 2026-01-05 1 阅读
0

如何在 AWS 上使用 NGINX 和 SSL 部署 Node.js 应用?检查 NGINX 配置并重启 NGINX

如何使用 NGINX 和 SSL 在 AWS 上部署 Node.js 应用




检查 NGINX 配置

重启 NGINX

  • 照片由 Bill Jelen 拍摄,来自 Unsplash

原文发表于我的博客

在本教程中,我们将简要介绍在 AWS EC2 实例上部署 Node.js/Express 应用程序的过程。不得不承认,服务器配置和应用程序部署可能是一项繁琐的任务。作为一名开发人员,您可能并不了解网络安全的方方面面,也不了解反向代理和负载均衡的工作原理。我第一次部署应用程序时,查阅了大量 Stack Overflow 上的信息和各种博客文章。我当时想,如果能有一份循序渐进的应用程序部署指南该有多好啊!正是这个问题促使我写了这篇博客文章。
本文将涵盖以下内容:

  1. EC2实例的配置(例如网络配置、端口等)
  2. 安装和配置 Nginx 作为反向代理
  3. 将 EC2 指向自定义域名(可选)
  4. 我们使用 Let's Encrypt SSL 证书保护我们的网站。

如果您使用的是其他云服务提供商,例如 Azure、Google Cloud Platform、IBM 或 Digital Ocean,也可以按照以下步骤操作。
配置 EC2 实例
首先,我们需要创建一个虚拟机。为此,我们将转到 AWS 控制台,然后从服务中选择 EC2,如下图所示。

从 AWS 控制台选择 EC2
。这将带您进入 EC2 控制面板。在这里,您可以点击“启动实例”按钮来创建新的 EC2 实例。

您可以选择在实例上运行哪个操作系统。我将使用 Ubuntu 20.04。

接下来,系统会提示您选择实例类型。我这里选择免费的 t2 微型实例。

您可以接受步骤 3、4 和 5 的默认配置。在步骤 6 中,您可以选择安全组规则。这里我将选择 SSH、HTTP 和 HTTPS。我还选择了一个自定义 TCP 端口 8000。我们的 Node 应用程序将在 8000 端口上运行。

如果需要,我们可以稍后更改这些配置,所以即使搞砸了也不用担心😅。
实例创建完成后,请通过 SSH 连接到您的实例。我们需要设置的第一件事是 Node.js 本身。我将运行以下命令在我的实例中安装 Node.js。

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install nodejs

node --version
Enter fullscreen mode Exit fullscreen mode

完成节点设置后,我们可以克隆代码库并在云实例中运行代码。

git clone <project_repo>
cd yourproject
npm install
npm start (or whatever your start command)
# stop app
ctrl+C
Enter fullscreen mode Exit fullscreen mode

我的应用运行在端口8000。我们可以通过访问公网 IP 地址和端口 来测试应用。就我的实例而言,它是http://54.210.195.17:8000/
接下来,我们将安装一个名为 的库,pm2它将使我们的 Node 应用在后台运行。运行以下命令,使用 pm2 启动您的应用。

sudo npm i pm2 -g
pm2 start app 
Enter fullscreen mode Exit fullscreen mode

这将启动我们的应用程序。我们可以再次访问该 IP 地址和端口,即可看到应用程序正在运行。

在浏览器中运行
设置 NGNIX 和反向代理
接下来,我们将设置 NGNIX 并创建一个反向代理。这将把我们的应用程序重定向到默认端口 80。我们还将通过 NGNIX 服务器添加 SSL。
我们运行以下命令来安装 NGNIX:

sudo apt install nginx
Enter fullscreen mode Exit fullscreen mode

安装完 NGNIX 后,我们可以配置它来设置反向代理并将我们的应用程序重定向到 80 端口。为此,我们需要编辑以下文件。

sudo nano /etc/nginx/sites-available/default
server_name yourdomain.com www.yourdomain.com;

    location / {
        proxy_pass http://localhost:8000; # your app's port
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
Enter fullscreen mode Exit fullscreen mode

在位置设置部分,按照上述步骤进行更改。如果您使用的是自定义域名,请前往您的 DNS 提供商处,并添加A Record如下所示的配置。

在目标
部分,我们将添加实例的公网 IP 地址。
完成后,返回终端并重启 NGNIX。

# Restart NGINX
sudo service nginx restart
Enter fullscreen mode Exit fullscreen mode

自定义域名需要一些时间才能生效。一段时间后,您就可以访问您的自定义域名并查看应用程序的运行情况了。


最后,我们只需使用 SSL 加密来保护我们的网站即可。使用 Let's Encrypt 库可以轻松完成这项操作。
首先,运行以下命令安装 certbot 软件包。

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
Enter fullscreen mode Exit fullscreen mode

安装完成后,我们将使用 certbot cli 生成 SSL 证书。运行以下命令,并在提示时提供您的电子邮件信息以生成 SSL 证书。

    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Enter fullscreen mode Exit fullscreen mode

证书生成后,您应该通过 HTTPS 连接到您的应用程序。

搞定!现在你的 EC2 实例上已经运行了一个安全的 Web 应用程序。👏

文章来源:https://dev.to/shadid12/how-to-deploy-your-node-js-app-on-aws-with-nginx-and-ssl-3p5l