欢迎光临
我们一直在努力

nginx跟前端和后端是什么关系?

目录

一、前言

二、nginx是什么?

三、nginx跟前端和后端springbot是什么关系?

四、怎么知道有没有装nginx?

五、反向代理是什么意思


一、前言

        仅供参考,未经实验验证,但回答了一些关键问题。关系如下图,实际上就是一个管理前后端的,因为后端服务器可能不止一台,有可能是一个集群,那么就需要nginx做负载均衡。

┌─────────────┐
│ 用户浏览器 │
└──────┬──────┘


┌─────────────┐ ┌─────────────────┐
│ Nginx │────▶│ 前端静态资源 │
│ (入口网关) │ │ (HTML/CSS/JS) │
│ │ └─────────────────┘
│ ┌───────┐ │
│ │ 反向代理 │◀────┐
│ └───────┘ │ │
└──────┬──────┘ │
│ │
▼ │
┌─────────────┐ │
│ Spring Boot │─────┘
│ 后端服务 │ (API 请求 /api/*)
│ (Java应用) │
└─────────────┘

二、nginx是什么?

Nginx(发音 "engine-x")是一款高性能的 Web 服务器/反向代理服务器。


核心功能

功能说明
静态资源服务 托管 HTML、CSS、JS、图片等文件
反向代理 把请求转发给后端应用(如 Node.js、Python、Java)
负载均衡 多台服务器之间分发流量
HTTPS/SSL TLS 加密、证书管理
缓存加速 缓存静态内容,减轻后端压力

为什么流行?

优势对比
高并发 事件驱动架构,C10K 问题(万级并发)轻松处理
低内存 比 Apache 更省资源
配置简单 语法清晰,上手快
热部署 不停机更新配置
生态丰富 模块多,社区活跃

典型使用场景

用户 → Nginx → 静态文件(直接返回)

动态请求 → 转发给后端(Node.js/Python/PHP/Java)

多台服务器 → 负载均衡分发


简单配置示例

# /etc/nginx/nginx.conf 或 sites-enabled/default

server {
listen 80;
server_name example.com;

# 静态文件
location / {
root /var/www/html;
index index.html;
}

# API 反向代理到后端
location /api/ {
proxy_pass http://localhost:3000;
}
}


常用命令

# 安装
sudo apt install nginx # Ubuntu/Debian
sudo yum install nginx # CentOS/RHEL

# 启停管理
sudo systemctl start nginx # 启动
sudo systemctl stop nginx # 停止
sudo systemctl reload nginx # 热重载配置(不中断服务)

# 测试配置语法
sudo nginx -t


与 Apache 对比

特性NginxApache
架构 事件驱动(异步) 进程/线程驱动
静态资源 ⭐⭐⭐ 极快 ⭐⭐ 一般
动态内容 需配合后端 模块直接运行(如 mod_php)
配置复杂度 简单 较复杂
.htaccess 不支持 支持
适用场景 高并发、反向代理 复杂配置、共享主机

一句话总结

Nginx = 高性能的"交通指挥员",专门负责接收用户请求,能直接响应的就自己处理(静态文件),需要动态处理的转发给后端应用,还能把流量分摊到多台服务器。

现在绝大多数网站架构里都有它的身影。

三、nginx跟前端和后端springbot是什么关系?

Nginx 与前端、Spring Boot 后端的关系可以用一张图说明:


典型架构图

┌─────────────┐
│ 用户浏览器 │
└──────┬──────┘


┌─────────────┐ ┌─────────────────┐
│ Nginx │────▶│ 前端静态资源 │
│ (入口网关) │ │ (HTML/CSS/JS) │
│ │ └─────────────────┘
│ ┌───────┐ │
│ │ 反向代理 │◀────┐
│ └───────┘ │ │
└──────┬──────┘ │
│ │
▼ │
┌─────────────┐ │
│ Spring Boot │─────┘
│ 后端服务 │ (API 请求 /api/*)
│ (Java应用) │
└─────────────┘


三者分工

层级技术职责
入口层 Nginx 接收所有请求,分流处理
前端 Vue/React/Angular 打包后的静态文件 用户界面、交互逻辑
后端 Spring Boot (Java) 业务逻辑、数据库操作、API 接口

Nginx 的具体作用

1. 托管前端静态资源

server {
listen 80;
server_name myapp.com;

# 前端静态文件
location / {
root /var/www/html/dist; # 前端打包后的 dist 目录
index index.html;
try_files $uri $uri/ /index.html; # 支持前端路由(Vue/React Router)
}
}

2. 反向代理到 Spring Boot

# API 请求转发给后端
location /api/ {
proxy_pass http://localhost:8080; # Spring Boot 默认端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

# WebSocket 支持(如有需要)
location /ws/ {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}


完整配置示例

server {
listen 80;
server_name example.com;

# 1. 前端静态资源(Vue/React 打包后的 dist)
location / {
root /home/user/myapp/dist;
index index.html;
try_files $uri $uri/ /index.html; # 关键:处理前端路由
}

# 2. 后端 API 代理到 Spring Boot
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_connect_timeout 30s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
}

# 3. 静态资源缓存优化
location ~* \\.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
}


为什么这样设计?

优势说明
解耦 前后端独立部署,互不影响
性能 Nginx 处理静态文件比 Spring Boot 快 10 倍以上
安全 后端不直接暴露公网,Nginx 做统一入口
扩展 多台 Spring Boot 实例时,Nginx 做负载均衡
路由 前端 History 模式路由需要 Nginx 配合

部署流程

# 1. Spring Boot 打包运行
./mvnw package
java -jar target/app.jar –server.port=8080

# 2. 前端打包
npm run build
# 生成 dist/ 目录,复制到服务器

# 3. Nginx 配置并启动
sudo nginx -t # 检查配置
sudo systemctl reload nginx


一句话总结

Nginx 是"前台接待":用户请求先到 Nginx,静态文件自己直接给(前端),动态数据转给 Spring Boot(后端),实现前后端分离部署。

四、怎么知道有没有装nginx?

检查系统是否安装 Nginx 的几种方法:


方法 1:检查版本(最直接)

nginx -v # 简版信息
nginx -V # 详细配置参数(大写 V)

结果含义
nginx version: nginx/1.18.0 ✅ 已安装,显示版本
command not found ❌ 未安装

方法 2:检查服务状态

systemctl status nginx # Linux 系统(推荐)
service nginx status # 兼容旧系统

状态含义
active (running) ✅ 已安装且运行中
inactive (dead) ⚠️ 已安装但未启动
Unit nginx.service could not be found ❌ 未安装

方法 3:检查安装包

# Debian/Ubuntu
dpkg -l | grep nginx

# CentOS/RHEL/Fedora
rpm -qa | grep nginx

# Arch
pacman -Q | grep nginx

# 通用(如有)
which nginx
whereis nginx


方法 4:检查进程和端口

# 看进程
ps aux | grep nginx

# 看端口(Nginx 默认 80/443)
sudo netstat -tlnp | grep nginx
sudo ss -tlnp | grep nginx


方法 5:直接访问测试

curl http://localhost # 本机测试
curl -I http://localhost # 只看响应头

或浏览器访问服务器 IP,看到 "Welcome to nginx!" 页面即确认。


快速诊断脚本

#!/bin/bash
echo "=== Nginx 检查 ==="

echo -e "\\n1. 版本检查:"
nginx -v 2>/dev/null || echo "❌ 未安装"

echo -e "\\n2. 服务状态:"
systemctl status nginx –no-pager 2>/dev/null | head -5 || echo "❌ 无服务"

echo -e "\\n3. 进程检查:"
ps aux | grep "[n]ginx" || echo "❌ 无进程"

echo -e "\\n4. 端口监听:"
sudo ss -tlnp | grep -E ":(80|443)" || echo "❌ 未监听 80/443"


结果速查表

检查项已安装未安装
nginx -v 显示版本 command not found
systemctl status 显示状态 Unit not found
which nginx 显示路径 无输出
curl localhost 返回 HTML Connection refused

五、反向代理是什么意思

反向代理(Reverse Proxy)是指代理服务器接收客户端请求,转发给内部服务器,再将响应返回给客户端。


正向代理 vs 反向代理

正向代理反向代理
代理对象 代理客户端 代理服务器
客户端是否知情 知道(需配置代理) 不知道(以为是直接访问)
用途 翻墙、匿名、加速访问 负载均衡、安全防护、隐藏后端
典型场景 公司内网通过代理上网 用户访问网站 → Nginx → 后端服务器

正向代理:客户端 ◀── 代理 ──▶ 外网(Google等)
(帮你出去)

反向代理:客户端 ──▶ 代理 ──▶ 内部服务器
(帮你进来)


反向代理的核心作用

用户浏览器 ──▶ Nginx(反向代理) ──▶ 后端服务器集群
1.2.3.4:80 ├─▶ Spring Boot A:8080
├─▶ Spring Boot B:8081
└─▶ Spring Boot C:8082

功能说明
隐藏后端 用户只接触 Nginx,不知道后端真实 IP 和端口
负载均衡 一台 Nginx 分发到多台后端,分摊压力
安全防护 统一入口做防火墙、限流、防 DDoS
SSL 终端 HTTPS 在 Nginx 层处理,后端用 HTTP
静态加速 图片/CSS/JS 直接由 Nginx 返回,不打扰后端
路径统一 多个后端服务整合到统一域名/端口

生活类比

场景解释
酒店前台 客人(用户)只找前台(Nginx),前台再联系具体服务员(后端)
外卖平台 顾客(用户)只通过美团(Nginx)下单,不知道具体哪家餐厅(后端)做的
公司前台 访客(用户)先到前台登记,前台再通知内部员工(后端)

Nginx 反向代理配置示例

server {
listen 80;
server_name api.example.com;

# 用户访问 /api/user → 转发到用户服务
location /api/user {
proxy_pass http://localhost:8081;
}

# 用户访问 /api/order → 转发到订单服务
location /api/order {
proxy_pass http://localhost:8082;
}

# 用户访问 / → 转发到主应用
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host; # 传递原始域名
proxy_set_header X-Real-IP $remote_addr; # 传递真实IP
}
}


关键配置指令

指令作用
proxy_pass 转发目标地址(后端服务器)
proxy_set_header 修改/添加请求头传给后端
proxy_connect_timeout 连接超时时间
proxy_read_timeout 读取响应超时时间

一句话总结

反向代理 = "中间商",对外统一接待,对内分发任务,用户不知道背后是谁在处理。

Nginx 是最流行的反向代理工具,80% 以上的网站架构都用它做入口层。

赞(0)
未经允许不得转载:171主机测评 » nginx跟前端和后端是什么关系?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址