作为一名拥有 10 多年 Linux 系统使用经验的技术人员,我可以说,使用 Nginx 设置反向代理是处理 Web 应用流量最常用且最高效的方式之一。
反向代理充当中间服务器,将客户端请求转发到相应的后端服务器,它是实现负载均衡、提升安全性和性能的重要工具。
在本指南中,我将逐步介绍如何在 Ubuntu 24.04 上将 Nginx 配置为反向代理,并演示如何在 Nginx 后面托管一个简单的 Web 应用。
前提条件
在开始之前,请确保满足以下条件:
- 已启动并运行的 Ubuntu 24.04 服务器(可以使用 VPS 或物理服务器)。
- 具有 root 或 sudo 权限以执行系统管理任务。
- 在后端服务器上运行的示例 Web 应用(本例中我们将使用一个基础的
Node.js应用)。 - 具备基本的 Linux 命令和网络概念知识。
第 1 步:在 Ubuntu 24.04 上安装 Nginx
首先,我们需要使用以下命令从默认的 Ubuntu 软件源安装 Nginx Web 服务器。
sudo apt updatesudo apt install nginx
安装完成后,您可以检查 Nginx 的状态以确保其正在运行:
sudo systemctl status nginx
如果 Nginx 未运行,请使用以下命令启动它:
sudo systemctl start nginx
要确保 Nginx 在开机时自动启动:
sudo systemctl enable nginx
如果您的服务器上启用了 UFW 防火墙,请确保允许 HTTP(端口 80)流量通过。
sudo ufw allow 'Nginx Full'sudo ufw enable
第 2 步:设置后端 Web 应用
在本例中,我们将使用一个简单的 Node.js 应用作为后端服务器,它将监听端口 3000。
首先,在服务器上安装 Node.js 和 npm:
sudo apt install nodejs npm
现在,让我们创建一个简单的 Node.js Web 应用:
sudo mkdir /var/www/myappcd /var/www/myapp
初始化 Node.js 应用:
sudo npm init -y
安装 Express,这是一个用于 Node.js 的简单 Web 框架:
sudo npm install express
在 /var/www/myapp 目录中创建 app.js 文件,内容如下:
const express = require('express');const app = express();const port = 3000;app.get('/', (req, res) => { res.send('Hello, this is a backend app!');});app.listen(port, () => { console.log(`App running on http://localhost:${port}`);});启动您的 Node.js 应用。
sudo node app.js
您的后端 Web 应用现在已在 http://localhost:3000 上运行。您可以在浏览器中访问以下地址进行验证,应该会看到“Hello, this is a backend app!”消息。
http://your-server-ip:3000

第 3 步:将 Nginx 配置为反向代理
现在,让我们配置 Nginx,将来自外部世界的请求转发到运行在端口 3000 上的 Node.js 后端。
首先,在 sites-available 目录中创建一个新的配置文件:
sudo nano /etc/nginx/sites-available/myapp
在新文件中添加以下配置,告知 Nginx 将传入的 HTTP 请求转发到运行在端口 3000 上的后端服务器:
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://localhost:3000; # 将请求转发到您的后端服务器
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;
}
}保存配置后,创建一个指向 sites-enabled 目录的符号链接以启用此配置:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
在重启 Nginx 之前,务必确保没有语法错误:
sudo nginx -tsudo systemctl restart nginx
现在,打开浏览器并访问服务器的公网 IP 地址或域名(例如 http://your-server-ip 或 http://your_domain)。
您应该会看到“Hello, this is a backend app!”消息,这意味着 Nginx 已成功将请求转发到您的后端 Node.js 应用。

为了实现安全连接,您可以使用 Let’s Encrypt 配置 SSL。
sudo apt install certbot python3-certbot-nginxsudo certbot --nginx -d your_domain_or_ip
总结
在本指南中,我们在 Ubuntu 24.04 服务器上将 Nginx 配置为反向代理,用于将 HTTP 请求转发到运行在 localhost:3000 上的后端 Node.js Web 应用。
通过遵循这些步骤,您已经了解了使用 Nginx 进行反向代理的基本概念,以及如何在 Nginx 后面托管一个简单的 Web 应用。借助此设置,您可以轻松将其扩展到更复杂的应用,并根据需要扩展基础设施。