vue 项目 history 模式 nginx 基于请求动态配置 try_file
文章目录
基于 url 动态配置 try_file
说明
- 前端 vue 项目构建后使用 nginx 作为静态资源的代理
- 由于 url 内 # 的原因,项目需使用 history 模式,所以需要 nginx 配置 try_file,如:
|
|
- 当项目过多时,由于 try_file 指定的各项目的 index.html,所以需要配置多条 nginx location,nginx 配置维护压力大
解决方案
- 利用 nginx 捕获组捕获 url 中 url 的一部分,动态拼接到 try_file 内
- nginx 的捕获组使用 () 定义,可以将括号内匹配的部分保存到一个变量中,如例子中的捕获 [^\/] 保存到 $1 中
- 定义一级 web_project,用于区分所有的前端项目
- 各前端子项目 web_project 下,try_file 到子项目内的 index.html
|
|
测试
- webroot 目录结构
|
|
- 请求
|
|
补充
if 导致变量失效
- 针对需要对 html 增加 no-store header 的场景,使用上述配置时,会由于 $1 变量丢失导致 try_file 失效
- 解决方案如下:
|
|
文章作者 Xiang
上次更新 2024-12-04