如何在Ubuntu上为Web应用设置Nginx反向代理

如何在Ubuntu上为Web应用设置Nginx反向代理

作为一名有超过10年经验的Linux专家,我可以说,使用Nginx设置反向代理是处理Web应用流量最常见且高效的方法之一。

反向代理充当中介服务器,将客户端请求转发到适当的后端服务器,是负载均衡、安全性和性能的关键工具。

在本指南中,我将带你一步一步地配置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上运行,你可以通过浏览器访问该地址,看到“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 -t

然后重启Nginx:

sudo systemctl restart nginx

现在,在浏览器中访问服务器的公共IP地址或域名(例如,http://your-server-ip或http://your_domain)。

你应该会看到“Hello, this is a backend app!”的信息,表示Nginx已经成功将请求转发到后端的Node.js应用。

配置SSL(可选)

为了确保连接安全,可以使用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应用。

通过遵循这些步骤,你已经了解了Nginx反向代理的基本概念,并学会了如何将一个简单的Web应用托管在Nginx后面。通过这个配置,你可以轻松扩展到更复杂的应用,并根据需要扩展你的基础设施。

未经允许不得转载:A5数据 » 如何在Ubuntu上为Web应用设置Nginx反向代理

相关文章

contact