前端配置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.pswp.cn/news/907033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音识别技术在人工智能中的应用

姓名:成杰 学号:21021210653 学院:电子工程学院 【嵌牛导读】 应用语音智能这项识别技术是为了使计算机可以听懂人类的语言,并执行人类的某项操作。现阶段这项技术已经成为人工智能领域的重点研究方向和实现人机语音交互的…

uniapp实现大视频文件上传-- 阿里云oss直传方式 - app、H5、微信小程序

之前的项目文件上传比较慢,使用预签名方式上传H5正常,微信小程序和app使用axios时出现了各种报错,配置完后还是不行。所以换一种oss直传方式。 找到一个 实现了的 参考:https://blog.csdn.net/qq_44860866/article/details/129670188

【Java学习笔记】抽象类

抽象类 引入关键字:abstract 应用场景:当子类中共有的部分 / 特性可以放到抽象类中 1. 通过子类的方法重写实现不同的功能 2. 编写一个方法把共有的部分放入其中,在该方法中调用抽象方法(动态绑定机制) 3. 便可以实…

EPT(Efficient Prompt Tuning)方法,旨在解决提示调优(Prompt Tuning)中效率与准确性平衡和跨任务一致性的问题

EPT(Efficient Prompt Tuning)方法,旨在解决提示调优(Prompt Tuning)中效率与准确性平衡和跨任务一致性的问题 一、核心原理:分解提示与多空间投影 1. 提示分解:用低秩矩阵压缩长提示 传统问题: 长提示(如100个token)精度高但训练慢,短提示(如20个token)速度快但…

深入剖析Java中的伪共享:原理、检测与解决方案

在高性能Java应用的开发中,尤其是多线程环境下,开发者往往会关注锁竞争、线程调度等显性问题,但有一个隐蔽的性能杀手——伪共享(False Sharing)​,却容易被忽视。本文将通过原理分析、代码案例与实战工具&…

JMeter 教程:响应断言

目录 JMeter 教程:响应断言的简单介绍【轻松上手】 ✅ 什么是响应断言? 📌 使用场景示例 🛠️ 添加响应断言步骤 1. 选中 HTTP 请求 → 右键 → Add → Assertions → Response Assertion 2. 设置断言内容: ✅ …

11.11 TypedDict与Pydantic实战:Python高效状态管理秘籍

使用 TypedDict 和 Pydantic 管理状态 关键词:LangGraph 状态管理, TypedDict 类型化字典, Pydantic 数据模型, 状态持久化, 多轮对话设计 1. 状态管理的核心挑战 在复杂 AI Agent 系统中,状态管理需要解决三个关键问题: #mermaid-svg-0sX3763L7VP2RvuX {font-family:&quo…

ThreadLocal线程本地变量在dubbo服务使用时候遇到的一个坑

我昨天遇到一个问题,就是我springboot项目里面有一个提供代办服务审核的dubbo接口,这个接口给房源项目调用,但是碰到一个问题就是,房源项目每天凌晨5点会查询满足条件过期的数据,然后调用我这边的代办审核dubbo接口&am…

[Java实战]Spring Boot整合达梦数据库连接池配置(三十四)

[Java实战]Spring Boot整合达梦数据库连接池配置(三十四) 一、HikariCP连接池配置(默认) 1. 基础配置(application.yml) spring:datasource:driver-class-name: dm.jdbc.driver.DmDriverurl: jdbc:dm://…

【MySQL】08.视图

视图就是一个由查询到的内容定义的虚拟表。它和真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。 1. 基本使用 mysql> select * from user; -------------------- | id | age | name …

4 通道1250MSPS‐16bit DAC 回放板

简介 4 通道1250MSPS‐16bit DAC 回放板 是一款4 路转换速率最高为1250MSPS 的DAC 回放板, DAC 位数16bit;板卡支持触发输出/触发输入;DAC 采样时钟源支持内部参考时 钟、外部参考时钟、外部采样时钟三种方式,可通过SPI 总线实现时…

C/C++---类型转换运算符

在C中,类型转换运算符(Type Conversion Operator)允许类对象在需要时自动转换为其他类型。这是一种特殊的成员函数,能够增强类的灵活性和交互性。 1. 基本语法 类型转换运算符的声明格式为: operator 目标类型() co…

大模型Agent

手撕 Agent 1、功能描述 设计一个 Agent,自动选择使用以下工具回答用户的问题: 查看目录下的文件基于给定的文档回答用户问题查看与分析 Excel 文件撰写文档调用 Email 客户端发邮件2、演示用例 实验中使用三个文档演示 Agent 的能力 ./data|__2023年8月-9月销售记录.xlsx…

超临界机组协调控制系统建模项目开发笔记

超临界机组协调控制系统建模项目开发笔记 项目概述 本项目基于两篇论文的方法,对超临界机组协调控制系统进行数据驱动建模。主要使用LSTMTransformer混合架构,实现对主蒸汽压力(Pst)、分离器蒸汽焓值(hm)和机组负荷(Ne)的预测。同时,通过消…

mysql安全管理

数据库管理系统用于管理数据库服务器的各种数据库资源,MYSQL是一个支持多用户的数据库管理系统,实现多用户下,各种数据库资源的安全访问控制,确保数据库资源安全访问成为了数据库管理系统的核心功能。MYSQL安全管理是指允许合法账…

QT中常用的类

Qt 是一个功能强大的跨平台框架,提供了丰富的类库来开发 GUI 和应用程序。以下是 ​​Qt 中常用的核心类​​,按模块分类整理: ​​1. GUI 和窗口管理​​ 类名用途示例场景​​QWidget​​所有 GUI 控件的基类(按钮、窗口等&…

【Redis原理篇】五大基本数据类型的底层编码方式

上文:redis底层数据结构 String底层结构 一、编码方式 1.int编码 **适用范围:**64位整数(long) **实现:**直接将数据存储在redisObject的ptr指针位置。 内存布局: 2.embstr编码 **适用条件&#xf…

自动编码器 潜在空间 Autoencoders 视频截图

【双语】Autoencoders_哔哩哔哩_bilibili 【双语】Autoencoders_哔哩哔哩_bilibili

ZLG USBCANFD python UDS刷写脚本

文章目录 概述python UDS 刷写脚本UI交互界面概述 在实际工作中,有使用周立功的UDSCANFD设备,用来收发CAN数据和UDS on CAN的诊断测试或者UDS on CAN的ECU升级。上位机使用ZCANPro,软件自带ECU刷新界面,可以编辑UDS服务,加载升级文件等,能用是能用,但是仍不能满足一些特…

线程安全问题的成因

前言 大家晚上好呀~~ 今天学习了线程不安全问题的成因。线程安全问题是十分重要的知识点,我想把我所学的与大家分享一波,希望可以帮助到有需要的人,同时加深自己对于线程安全问题的理解。 分析过程如下 结语 今天心情还不错~ 要坚持持续…