如何在 Ubuntu 上使用 Nginx 反向代理托管 Web 应用程序
作为拥有超过 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 update
sudo 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/myapp
cd /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
上运行,您可以通过导航到浏览器中的以下地址来验证这一点,并且您应该看到“您好,这是后端应用程序!”消息。
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; # 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 地址或域(例如,http://your-server-ip
或 http://your_domain
)。
您应该看到消息“Hello,这是一个后端应用程序!”,这意味着 Nginx 已成功将请求转发到您的后端 Node.js
应用程序。
对于安全连接,您可以使用 Let’s Encrypt 配置 SSL。
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your_domain_or_ip
结论
在本指南中,我们将 Nginx 配置为反向代理,以将 HTTP 请求转发到在 localhost:3000
上运行的后端 Node.js
Web 应用程序Ubuntu 24.04 服务器。
通过执行这些步骤,您已经了解了 Nginx 反向代理的基本概念以及如何在 Nginx 后面托管简单的 Web 应用程序。通过此设置,您可以轻松地将其扩展到更复杂的应用程序,并根据需要扩展您的基础设施。