作为一个拥有超过 10 年 Linux 系统工作经验的人,我可以说设置反向代理nginx是处理 Web 应用程序流量的最常见、最有效的方法之一。
反向代理充当中间服务器,将客户端请求转发到适当的后端服务器,它是负载平衡、安全性和性能的重要工具。
在本指南中,我将引导您完成配置步骤nginx作为反向代理乌班图24.04以及在 Nginx 后面托管简单 Web 应用程序的示例。
先决条件
在我们开始之前,请确保您具备以下条件:
- 乌班图24.04服务器启动并运行(您可以使用 VPS 或物理服务器)。
- 用于执行系统管理任务的 root 或 sudo 权限。
- 在后端服务器上运行的示例 Web 应用程序(我们将使用基本的
Node.js此示例的应用程序)。 - 基本的和网络概念。
步骤1:在Ubuntu 24.04上安装Nginx
首先,我们需要安装nginx使用以下命令从默认 Ubuntu 存储库获取 Web 服务器。
sudo apt update sudo apt install nginx
安装完成后,您可以检查 Nginx 的状态以确保其正在运行:
sudo systemctl status nginx
如果nginx未运行,请使用以下命令启动它:
sudo systemctl start nginx
确保 Nginx 在启动时自动启动:
sudo systemctl enable nginx
如果你有一个在您的服务器上,确保HTTP协议(港口80) 允许通行。
sudo ufw allow 'Nginx Full' sudo ufw enable
在这个例子中,我们将使用一个简单的Node.js应用程序作为我们的后端服务器,它将监听端口3000。
首先,安装Node.js和npm在您的服务器上:
sudo apt install nodejs npm
现在,让我们创建一个简单的Node.js网络应用程序:
sudo mkdir /var/www/myapp cd /var/www/myapp
初始化Node.js应用程序:
sudo npm init -y
安装表达,一个简单的网络框架Node.js:
sudo npm install express
创建一个app.js文件内的/var/www/myapp目录包含以下内容:
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 https://localhost:${port}`);
});
开始你的Node.js应用。
sudo node app.js
您的后端 Web 应用程序现在正在运行https://localhost:3000您可以通过在浏览器中导航到以下地址来验证这一点,您应该看到“您好,这是一个后端应用程序!“ 信息。
https://your-server-ip:3000

步骤 3:将 Nginx 配置为反向代理
现在,我们来配置一下nginx将外界的请求转发给Node.js后端在端口上运行3000。
首先,在目录下新建一个配置文件sites-available目录:
sudo nano /etc/nginx/sites-available/myapp
在新文件中,添加以下配置以告诉 Nginx 将传入的 HTTP 请求转发到在端口 3000 上运行的后端服务器:
server {
listen 80;
server_name your_domain_or_ip; location / { proxy_pass https://localhost:3000; # Forward requests to your backend server 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 -t sudo systemctl restart nginx
现在,打开浏览器并导航到服务器的公共 IP 地址或域(例如,https://your-server-ip或者https://your_domain)。
您应该看到消息“您好,这是一个后端应用程序!“,这意味着 Nginx 已成功将请求转发到您的后端Node.js应用。

为了安全连接,您可以配置SSL协议和让我们加密。
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain_or_ip
结论
在本指南中,我们配置了nginx作为反向代理将 HTTP 请求转发到后端Node.jsWeb 应用程序运行于localhost:3000在一个乌班图24.04服务器。
通过执行这些步骤,您已经了解了 Nginx 反向代理的基本概念以及如何在 Nginx 后面托管简单的 Web 应用程序。通过此设置,您可以轻松地将其扩展到更复杂的应用程序,并根据需要扩展您的基础设施。
