教程 express tutorial

使用 Nginx 部署

在生产环境中,Nginx 是一个流行的反向代理服务器,它不仅能够作为 Web 服务器提供静态文件服务,还能将请求转发到后端的 Express 应用中。通过使用 Nginx 部署 Express 应用,可以提高应用的性能、可靠性,并提供更多的功能,如负载均衡、缓存、SSL 等。接下来,我们将学习如何通过 Nginx 部署 Express 应用。

1. 安装 Nginx

首先,确保你的服务器上已经安装了 Nginx。如果你使用的是 Ubuntu 或 Debian 系统,可以通过以下命令安装 Nginx:

bash
sudo apt update
sudo apt install nginx

`

对于 CentOS 系统:

bash
sudo yum install nginx

安装完成后,启动 Nginx:

bash
sudo systemctl start nginx

确保 Nginx 在系统启动时自动启动:

bash
sudo systemctl enable nginx

你可以通过在浏览器访问服务器的 IP 地址(如 http://your-server-ip)来验证 Nginx 是否安装成功。如果安装成功,你将看到 Nginx 的欢迎页面。

2. 配置 Nginx 反向代理

在生产环境中,Nginx 通常作为反向代理,接收客户端的请求并将其转发给后端的 Express 应用。假设你的 Express 应用已经运行在 localhost 的 3000 端口上,接下来配置 Nginx 将请求转发给该端口。

2.1 配置 Nginx 站点配置文件

首先,打开 Nginx 的站点配置文件进行修改:

bash
sudo nano /etc/nginx/sites-available/default

在该文件中,你需要配置反向代理,将请求转发到你的 Express 应用。修改或添加如下内容:

nginx
server {
    listen 80;  # 监听 HTTP 请求
    server_name your-domain.com;  # 配置你的域名或 IP 地址

    # 根目录
    root /var/www/html;
    index index.html index.htm;

    location / {
        proxy_pass http://localhost:3000;  # 将请求转发到 Express 应用所在的端口
        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;
    }

    # 错误页面配置
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

2.2 说明

  • listen 80;:Nginx 监听 80 端口,接收来自客户端的 HTTP 请求。
  • server_name your-domain.com;:你可以将 your-domain.com 替换为你的实际域名或者服务器的 IP 地址。
  • proxy_pass http://localhost:3000;:将请求转发到运行在本地 3000 端口的 Express 应用。假设 Express 应用正在该端口上监听。
  • proxy_set_header:这些配置确保客户端的请求头信息能够正确传递到后端的 Express 应用。

2.3 测试 Nginx 配置

保存并关闭配置文件后,检查 Nginx 配置是否正确:

bash
sudo nginx -t

如果没有错误消息,重载 Nginx 配置使改动生效:

bash
sudo systemctl reload nginx

3. 启动 Express 应用

在后台运行 Express 应用,确保它在 3000 端口上监听请求。你可以使用 pm2 来守护和管理 Express 应用,确保其在生产环境中稳定运行。

bash
pm2 start app.js --name "express-app"

4. 配置 HTTPS(可选)

为了提高安全性,你可以为 Nginx 配置 SSL,启用 HTTPS 加密。我们可以使用 Let’s Encrypt 免费的 SSL 证书来完成这一过程。

4.1 安装 Certbot

Certbot 是一个自动化的工具,可以帮助你轻松获取和配置 Let’s Encrypt SSL 证书。首先,安装 Certbot:

对于 Ubuntu 系统:

bash
sudo apt install certbot python3-certbot-nginx

对于 CentOS 系统:

bash
sudo yum install certbot python3-certbot-nginx

4.2 获取 SSL 证书

使用 Certbot 自动获取 SSL 证书,并配置 Nginx:

bash
sudo certbot --nginx

该命令会自动帮助你获取 SSL 证书并修改 Nginx 配置,使其支持 HTTPS。你只需要按照提示输入你的电子邮件和域名。

4.3 测试 HTTPS 配置

获取 SSL 证书后,Nginx 将自动配置为监听 443 端口并支持 HTTPS。你可以通过浏览器访问 https://your-domain.com 来检查 HTTPS 是否配置成功。

5. 配置日志

Nginx 会记录访问日志和错误日志,默认情况下,它们存储在 /var/log/nginx/access.log 和 /var/log/nginx/error.log 文件中。你可以通过以下命令查看日志:

bash
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

通过查看日志,开发者可以追踪应用的访问情况,及时发现潜在问题。

6. 启动 Nginx 自启动

为了确保 Nginx 在系统重启后自动启动,你可以启用 Nginx 自启动:

bash
sudo systemctl enable nginx

7. 总结

在本章节中,我们学习了如何使用 Nginx 部署 Express 应用:

  1. 安装和配置 Nginx:通过 Nginx 作为反向代理,将请求转发到 Express 应用。
  2. 配置反向代理:使用 proxy_pass 配置将请求转发到运行在本地端口的 Express 应用。
  3. 配置 HTTPS(可选):通过 Certbot 为 Nginx 配置 SSL 证书,实现 HTTPS 加密通信。
  4. 日志管理:使用 Nginx 访问日志和错误日志监控应用的运行状态。

通过使用 Nginx 部署 Express 应用,可以有效提升应用的性能、可靠性,并提供更多的功能,如负载均衡、SSL 加密等。在生产环境中,Nginx 是一个必不可少的 Web 服务器和反向代理工具。