当前位置: 首页 > news >正文

Nginx 静态资源挂载与前端部署实战笔记

前言本文从零带你掌握 Nginx 静态资源托管、root/alias 区别、单页应用(Vue/React)部署、前后端分离代理、缓存优化、权限与常见报错排查,适用于生产环境,复制即用。


一、Nginx 安装与目录结构(Linux)

# CentOS/RHEL yum install -y nginx # Ubuntu/Debian apt update && apt install -y nginx # 启动&开机自启 systemctl start nginx systemctl enable nginx # 核心目录 # 主配置:/etc/nginx/nginx.conf # 子配置:/etc/nginx/conf.d/*.conf # 默认站点:/usr/share/nginx/html # 日志:/var/log/nginx/

二、静态资源挂载核心:root vs alias

1. root(拼接路径,最常用)

location /static/ { root /voy/v1/web-sls; # 访问 /static/img.png → /voy/v1/web-sls/static/img.png }

2. alias(精确替换路径)

location /static/ { alias /voy/v1/web-sls/assets/; # 访问 /static/img.png → /voy/v1/web-sls/assets/img.png }

3. 对比速查表

指令路径规则适用场景
rootroot + location站点根目录、常规静态资源
alias直接替换路径重命名、多级目录映射

三、前端项目挂载标准配置(推荐)

1. 纯静态站点

server { listen 80; server_name sls.voyagers.work; root /voy/v1/web-sls; index index.html; charset utf-8; location / { try_files $uri $uri/ /index.html; } # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ { expires 7d; add_header Cache-Control public; } }

2. SPA 路由刷新 404 解决

location / { try_files $uri $uri/ /index.html; }

四、前后端分离代理配置(你的项目专用)

1. 80 端口托管前端 + API 转发 9999

server { listen 80; server_name sls.voyagers.work; root /voy/v1/web-sls; index index.html; charset utf-8; # 后端接口 location /v1/ { proxy_pass http://127.0.0.1:9999; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 接口文档 location /docs { proxy_pass http://127.0.0.1:9999; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /openapi.json { proxy_pass http://127.0.0.1:9999; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { try_files $uri $uri/ /index.html; } location ~* \.(js|css|png|jpg|svg|woff2)$ { expires 7d; add_header Cache-Control public; } }

2. proxy_pass 斜杠坑点

# 带 /:去除前缀 location /api/ { proxy_pass http://ip:port/; } # /api/user → /user # 不带 /:保留前缀 location /api/ { proxy_pass http://ip:port; } # /api/user → /api/user

五、多站点共用 80 端口(关键知识点)

Nginx 靠 server_name 区分多站点,同一 80 端口可托管无数项目,互不冲突!

# 项目A server { listen 80; server_name a.com; root /web/a; } # 项目B server { listen 80; server_name b.com; root /web/b; }

六、权限与安全(必看)

# 目录权限 chmod -R 755 /voy/v1/web-sls chown -R nginx:nginx /voy/v1/web-sls # SELinux 放行(CentOS) setenforce 0 # 永久 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 防火墙开放 80 firewall-cmd --add-service=http --permanent firewall-cmd --reload

七、配置生效命令

bash

运行

# 检查语法 nginx -t # 平滑重启 nginx -s reload # 重启服务 systemctl restart nginx

八、高频报错速查

  1. 403 Forbidden权限不足、index 缺失、SELinux 拦截、目录无执行权限。
  2. 404 Not Foundroot/alias 路径错误、文件不存在、try_files 缺失。
  3. 502 Bad Gateway后端未启动、端口错误、防火墙拦截。
  4. 刷新页面 404缺少try_files $uri $uri/ /index.html;

九、生产最佳实践

  1. 站点配置独立放/etc/nginx/conf.d/
  2. 静态资源启用长期缓存
  3. API 统一前缀/v1/
  4. 日志按站点拆分
  5. 禁止目录遍历、隐藏版本号
  6. 配置前必跑nginx -t

十、总结

  • root适合站点根目录,alias适合路径映射
  • SPA 必须加 try_files
  • 80 端口多域名靠 server_name 隔离
  • 前后端分离用 location 转发 API
  • 配置不生效优先看日志与权限
http://www.zskr.cn/news/1349238.html

相关文章:

  • ElevenLabs江西话语音生成延迟高达3.8s?性能优化实战:从HTTP/2复用到边缘缓存的4层加速架构
  • FlashAttention 为什么在昇腾 NPU 上这么快?聊清楚硬件亲和性这件事
  • 电影学院不教的真相:AI视频生成已重构分镜脚本标准(含2024戛纳获奖短片分镜→AI提示词双向映射表)
  • AI Agent不是锦上添花——而是生存刚需:一线房企区域总亲述“无Agent不开工”的3个临界点预警
  • Nginx反向代理404?彻底搞懂 proxy_pass带斜杠与不带斜杠的路径拼接规则
  • 手机如何和电脑连接 手机连接电脑的方法
  • 告别懵圈!用Python脚本一键解析汽车UDS诊断的DTC故障码(附完整代码)
  • 告别视频孤岛:3分钟让B站缓存视频重获新生 [特殊字符]
  • 学校采购智慧校园平台时怎样避免功能堆砌的误区
  • PXI便携式测控系统设计:从硬件选型到软件集成的工程实践
  • 渭源县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • Lean引擎:如何用开源量化交易框架解决策略开发三大痛点
  • 如何安全擦除硬盘数据:开源工具的完整指南
  • 武山县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 抖音下载终极指南:免费无水印批量保存完整方案
  • 5G通信实战:手把手教你用Vivado LDPC IP核配置编码参数(附避坑指南)
  • 七星区黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐 - 莘州文化
  • Sora 2长视频生成避坑清单(含官方未文档化的3个硬性长度限制及5种软性降级策略)
  • Rust Web框架对比分析:Axum、Rocket、Warp全面评测
  • 快速原型开发中利用Taotoken同时测试多个模型效果
  • Python网络爬虫实战:从Requests到Scrapy的完整指南
  • 告别盲目复制粘贴:深度解析CW32固件库结构,让你的MDK工程更清晰
  • 病理图像分析避坑指南:OpenSlide vs pyvips,选哪个?实测性能对比与场景选择
  • 合水县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • Go语言Session管理与认证机制实战
  • 临泽县黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化
  • 不只是打驱动:深入解读Intel Arc显卡在Linux下的RBAR技术及其对AI性能的实际影响
  • QT开发避坑:为什么你的QWidget死活收不到mouseMoveEvent?从setMouseTracking到子控件拦截的完整排查指南
  • 保姆级教程:用HWSD世界土壤数据库为SWAT模型快速搭建土壤库(附SPAW软件计算避坑指南)
  • 合作市黄金回收店铺哪家好 靠谱门店推荐及联系方式 - 莘州文化