Nginx 介绍

Nginx(读作"Engine X")是一款服务器软件,主要用来接收浏览器的 HTTP/HTTPS 请求,并返回网页文件或把请求转发给后端服务。

结合你前面问的"前端页面怎么让用户看到",Nginx 可以理解为网站的接待员和文件服务员。

1. Nginx 在网站里处于什么位置?

text 复制代码
用户浏览器
    ↓ 请求 https://www.example.com
云服务器
    ↓
Nginx
    ├── 返回前端文件:HTML、CSS、JS、图片
    └── 转发 API 请求:交给后端程序处理

注意这几个概念不同:

  • 云服务器:你租用的远程计算机。
  • Nginx:安装在这台计算机上的软件。
  • 前端文件:Nginx 提供给浏览器的内容。
  • 后端程序:处理登录、查询订单等业务逻辑的程序。

Nginx 可以直接安装在云服务器上,也可以放在容器中运行。

2. Nginx 最常见的功能

① 提供静态文件:让用户看到前端页面

假设你构建前端后,把文件放到了服务器上:

text 复制代码
/var/www/my-site/
├── index.html
├── assets/
│   ├── app.js
│   └── app.css
└── logo.png

配置 Nginx 后,浏览器请求与文件之间可以这样对应:

text 复制代码
访问 /               → 返回 index.html
访问 /assets/app.js  → 返回 assets/app.js
访问 /logo.png       → 返回 logo.png

Nginx 负责返回文件,浏览器负责渲染页面和执行前端 JavaScript。

② 反向代理:把请求转给后端

假设你的后端程序运行在服务器的 3000 端口:

text 复制代码
浏览器请求 /api/products
          ↓
Nginx:接收公网请求
          ↓ 转发
后端服务:127.0.0.1:3000
          ↓
返回商品数据
          ↓
Nginx 返回给浏览器

这就叫反向代理。

用户只需要访问网站域名,不需要知道后端实际运行在哪个地址、哪个端口。后端也可以只监听本机地址,不直接暴露到公网。

③ 处理 HTTPS

Nginx 可以配置域名证书,负责与浏览器建立加密连接:

text 复制代码
浏览器 ── HTTPS 加密连接 ── Nginx

如果 Nginx 和后端在同一台服务器上,Nginx 到后端之间通常可以通过本机 HTTP 通信。

④ 负载均衡

当一个后端实例处理不过来时,可以运行多个实例,让 Nginx 分配请求:

text 复制代码
                    ┌── 后端 A
浏览器 → Nginx ─────┼── 后端 B
                    └── 后端 C

这样可以分担压力,也可以配合健康检查、故障处理等机制提高可用性。具体能力取决于版本和配置。

3. 一个前端 + 后端的配置例子

假设:

  • 域名是 www.example.com。
  • 前端文件放在 /var/www/my-site。
  • 后端运行在本机 3000 端口。
  • 前端使用 /api/ 请求后端。

下面是一份用于说明原理的 HTTP 配置,正式上线还需要配置 HTTPS:

nginx 复制代码
server {
    listen 80;
    server_name www.example.com;

    root /var/www/my-site;
    index index.html;

    # /api/ 请求转发给后端
    location /api/ {
        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 其他请求提供前端文件
    location / {
        try_files $uri $uri/ /index.html;
    }
}

这里几个关键配置的作用:

配置 含义
listen 80 接收发往 80 端口的 HTTP 请求
server_name 指定这个站点处理的域名
root 指定前端文件所在目录
index index.html 设置默认首页文件
location 根据请求路径选择处理方式
proxy_pass 把请求转发给后端
try_files 尝试查找文件,找不到则回退到指定地址

上面这个 proxy_pass 会保留 /api/ 路径:

text 复制代码
用户请求:/api/products
后端收到:/api/products

如果后端的接口实际是 /products,需要调整代理配置,不能直接照搬。

try_files 的回退主要适用于 Vue、React 等单页应用,让用户直接访问 /about 时也能加载前端页面。

4. Nginx 平时怎么管理?

以 Ubuntu 上通过软件包安装的 Nginx 为例:

bash 复制代码
# 安装
sudo apt update
sudo apt install nginx

# 启动
sudo systemctl start nginx

# 查看运行状态
sudo systemctl status nginx

# 检查配置语法
sudo nginx -t

# 修改配置后,重新加载
sudo systemctl reload nginx

修改配置后,先检查,再重新加载,是很重要的习惯:

bash 复制代码
sudo nginx -t && sudo systemctl reload nginx

Ubuntu 的站点配置通常放在 /etc/nginx/sites-available/,并通过链接到 /etc/nginx/sites-enabled/ 来启用。不同安装方式的配置位置可能不同。

另外,Nginx 启动成功不代表外网一定能访问:云服务器的安全组和系统防火墙仍需允许对应端口。

5. 只有前端,需要 Nginx 和 Node.js 都运行吗?

对于构建后生成静态文件的 Vue / React 项目,通常只需要 Nginx,不需要一直运行 Node.js。

text 复制代码
构建阶段:
源码 → Node.js 执行 npm run build → HTML / CSS / JS

部署后:
浏览器 → Nginx → HTML / CSS / JS

但如果是 Node.js 后端,或者 Next.js、Nuxt 的服务端渲染应用,就可能需要:

text 复制代码
浏览器 → Nginx → Node.js 服务

一句话总结:Nginx 是网站入口------既能把前端文件发给浏览器,也能把业务请求转给后端。

相关推荐
小番茄夫斯基1 小时前
如果我一个前端页面要被用户看到,原理是什么,用户怎么通过网址就看到页面的,这背后要怎么弄
前端
迅猛龙办公室1 小时前
Python实现获取星期字符串
java·前端·python
小小荧2 小时前
🚀 Node.js 之父离开 Deno,带着整个团队加入了 Cloudflare
前端·node.js
IllegalCreed2 小时前
人中吕布,卡中 Blackwell:我用三国志14的数值给 687 个大模型排了座位
前端
troy1282 小时前
Java Web 常见面试题(2026 最新整理)
java·前端·hive
子龙_2 小时前
来在网页上用threejs画个蛋白质吧
前端·webgl·three.js
Data analyse4562 小时前
数据埋点设计的事件命名规则校验
服务器·前端·数据分析