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

前端配置nginx代理

一、定义静态文件的路径的两种方式

1. root 指令

(1)作用
  • 指定文件系统的 基础路径location 的 URI 会 追加到该路径后 形成完整路径。

(2)语法
location /uri/ {root /path/to/files;
}
(3)路径解析规则
  • 最终路径 = root + location URI
    例如:

    location /static/ {root /var/www/html;
    }
    • 请求 /static/logo.png → 服务器文件路径:/var/www/html/static/logo.png

(4)特点
  • 适用于 location 的 URI 需要作为子目录 的情况。

  • 默认会 自动拼接 location 和 root

(5)示例
server {listen 80;server_name example.com;location /images/ {root /data/website;  # 访问 /images/cat.jpg → /data/website/images/cat.jpg}
}

2. alias 指令

(1)作用
  • 指定文件系统的 精确路径location 的 URI 会 被替换为该路径

(2)语法
location /uri/ {alias /path/to/files/;
}
(3)路径解析规则
  • 最终路径 = alias + (URI 去除 location 前缀)
    例如:

    location /assets/ {alias /var/www/static/;
    }
    • 请求 /assets/js/app.js → 服务器文件路径:/var/www/static/js/app.js

(4)特点
  • 适用于 location 的 URI 需要映射到不同目录 的情况。

  • 必须以 / 结尾(否则可能拼接异常)。

  • 不会自动拼接 location 路径,而是直接替换。

(5)示例
server {listen 80;server_name example.com;location /static/ {alias /data/shared/;  # 访问 /static/logo.png → /data/shared/logo.png}
}

二、核心区别对比

特性rootalias
路径拼接方式root + location替换 location 为 alias
结尾斜杠 /可省略必须包含(如 /data/
适用场景URI 是文件子目录(如 /img/URI 需要映射到其他目录
性能影响无差异无差异

三、常见问题与注意事项

1. 结尾斜杠问题

  • alias 必须明确以 / 结尾,否则路径解析会出错:

    # 错误示例(缺少 /)
    location /static {alias /data/static;  # 请求 /static/file → 可能解析为 /data/staticfile
    }# 正确示例
    location /static/ {alias /data/static/;  # 请求 /static/file → /data/static/file
    }

2. 正则匹配 location

  • 如果 location 使用正则表达式(如 ~* \.(jpg|png)$),必须用 alias,因为 root 不支持正则替换。

3. 安全性

  • 避免将 alias 指向敏感目录(如 /etc/),否则可能引发安全问题。


四、示例场景

场景 1:普通静态资源
# 使用 root(URI 是子目录)
location /uploads/ {root /var/www/site;  # 文件路径:/var/www/site/uploads/file.txt
}# 使用 alias(URI 需要重映射)
location /docs/ {alias /mnt/shared/documents/;  # 文件路径:/mnt/shared/documents/file.txt
}
场景 2:单页应用(SPA)
location / {root /var/www/app/dist;try_files $uri $uri/ /index.html;  # Vue/React 路由支持
}

五、完整案例


worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 600;client_header_timeout 600;client_body_timeout 600;#上传文件的大小限制  默认1mclient_max_body_size 10m;underscores_in_headers on;server {# 访问端口listen 8080;server_name localhost;location / {root D:/Users/22972/work/nginx-1.23.3/web/dist/;index index.html index.htm;}location ^~/api/auth/ {proxy_pass http://192.168.0.125:8081/auth/;}# 后端线上服务代理location /api/system/ {proxy_pass http://192.168.0.125/api/system/;}# 前端子应用代理location /system-ui/ {proxy_pass http://localhost:8001/system-ui/;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}
}
http://www.xdnf.cn/news/9150.html

相关文章:

  • 预算超支、进度延误?工程企业如何实现精准管理?
  • 2025年储能产业TOP10省份及发展报告(附资料包下载)
  • 如何学习联邦学习和差分隐私
  • 家政维修平台实战10:搭建首页
  • 经典分类模型
  • 2021年江西工业互联网大赛———工业固件分析
  • 31.第二阶段x64游戏实战-封包-线程发包
  • 【科研绘图】3DMAX血管网络插件BloodVessels使用方法详解
  • 中级社会工作者《社会工作综合能力》的重点知识有哪些?
  • ASR/TTS model 通过量化提升推理速度
  • vue+ThreeJs 创造自动选择的甜甜圈(圆环)
  • 七彩喜认知症评估系统:解码大脑健康的“数字先知”
  • OpenGL Chan视频学习-7 Writing a Shader inOpenGL
  • 深度思考、弹性实施,业务流程自动化的实践指南
  • 网络编程学习笔记——TCP网络编程
  • 香港维尔利健康科技集团深化多方战略合作,构建全球智慧健康生态闭环
  • 2556. 第八大奇迹
  • OSPF补充信息
  • 亚马逊SP-API开发实战:商品数据获取与操作
  • 限流系列:resilience4j-ratelimiter
  • Linux环境下基于Docker安装 PostgreSQL数据库并配置 pgvector
  • [onnx 学习记录] 包包含的主要内容
  • Redisson分布式锁原理
  • 提升系统性能:Windows绿色版管理工具的实用指南
  • 红海云荣膺2025人力资源科技影响力品牌30强
  • IPD流程落地:项目任务书Charter开发
  • (2025.05)ubuntu20.04运行Mono-gs记录
  • android实现使用RecyclerView详细
  • 大模型微调(4):使用 AutoClass 管理 Tokenizer 和 Model
  • 航电系统之协同坐标技术篇