【Nginx】Nginx实现动态路由映射

【Nginx】Nginx实现动态路由映射
博主介绍:✌全网粉丝24W+,ZEEKLOG博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌

技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。

感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。

Nginx实现动态路由映射

在 Nginx 中实现 动态路径映射(即根据 URL 路径的一部分动态映射到本地文件系统中的对应目录或文件),通常使用 正则表达式 location + 捕获组(capture groups)+ aliasroot 来完成。

下面从基础到进阶,给出清晰、可直接使用的配置方案。


一、基本概念

指令作用
location ~ ^/prefix/(.*)$使用正则匹配 URI,并用 (.*) 捕获动态部分为 $1
alias /path/$1;将请求路径 替换 为本地路径(推荐用于动态映射)
root /path;将整个 URI 拼接 到 /path 后(适用于固定根目录)
动态路径映射首选 alias + 正则捕获。

二、典型场景与配置

2.1 场景 1:通用动态子路径映射(最常用)

URL:http://localhost/vtour/aaa/bbb.html
映射到:C:/data/vtour/aaa/bbb.html

URL:http://localhost/vtour/xxx/yyy.html
映射到:C:/data/vtour/xxx/yyy.html
location ~ ^/vtour/(.*)$ { alias C:/data/vtour/$1; index index.html index.htm tour.html; autoindex off; } 
  • $1/vtour/ 之后的所有内容。
  • 支持任意深度子目录和文件。
  • 自动处理首页(如访问 /vtour/project1/ 会找 project1/ 下的 index.html 等)。

2.2 场景 2:多项目根目录映射(带固定前缀)

URL:http://localhost/projects/myapp/dist/main.js
映射到:D:/projects/myapp/dist/main.js
location ~ ^/projects/([^/]+)/(.*)$ { alias D:/projects/$1/$2; } 
  • $1 = 项目名(如 myapp
  • $2 = 项目内的路径(如 dist/main.js
  • [^/]+ 表示“非斜杠字符至少一个”,避免跨目录安全问题。
安全提示:避免使用 (.*) 在开头捕获,防止路径穿越(如 ../)。可用 [^/]+ 限制一级目录。

2.3 场景 3:静态资源按版本号映射

URL:http://localhost/assets/v2/logo.png
映射到:/static/assets_v2/logo.png
location ~ ^/assets/(v\d+)/(.*)$ { alias /static/assets_$1/$2; } 
  • $1 = v2
  • $2 = logo.png
  • 实际路径:/static/assets_v2/logo.png

三、关键注意事项

3.1 alias 末尾不要随意加 /

# 错误:当 $1 为空时,变成 .../vtour//,可能出错 alias C:/data/vtour/$1/; # 正确:让 Nginx 自动处理 alias C:/data/vtour/$1; 

3.2 alias 不能和\ try_files 配合良好(某些版本有坑)

如果要用 try_files,建议改用 root

location ~ ^/vtour/(.*)$ { root C:/data; try_files /vtour/$1 $uri =404; } 

但这样不如 alias 直接。简单静态服务优先用 alias

3.3 Windows 路径写法

  • 使用正斜杠 /C:/data/vtour
  • 不要使用反斜杠 \(需转义,易出错)
  • 路径中不要包含空格或中文(除非你确定编码没问题)

3.4 重载配置

修改后务必测试并重载:

nginx -t # 测试语法 nginx -s reload # 重载配置(Windows/Linux 通用)

四、完整 server 示例(Windows)

server { listen 80; server_name localhost; location / { root html; index index.html; } # 动态映射 /vtour/xxx → C:/Develop/Krpano/krpano-1.19-pr13/vtour/xxx location ~ ^/vtour/(.*)$ { alias C:/Develop/Krpano/krpano-1.19-pr13/vtour/$1; index tour.html index.html index.htm; autoindex off; } } 

五、调试技巧

  1. 查看错误日志
    logs/error.log:看实际尝试访问的路径是否正确。
  2. 手动测试具体文件
    先访问完整文件路径,如:
    http://localhost/vtour/tour.html
    如果这个 404,说明路径映射错了;如果能打开,说明 index 文件缺失。
  3. 确认文件存在且可读
    Windows 上注意权限和路径大小写(虽然不敏感,但建议一致)。

六、总结

需求配置方式
简单子路径映射location ~ ^/prefix/(.*)$ { alias /local/$1; }
多级安全映射location ~ ^/api/([^/]+)/(.*)$ { alias /data/$1/$2; }
固定根目录root,不用 alias

只要你理解了 正则捕获 + $1 变量 + alias 这个组合,就能灵活实现任意动态路径映射。

七、拓展

alias vs root 在正则中的行为

  • alias完全替换 匹配的路径部分。
  • root拼接 整个 URI 到路径后。

如下表所示,可以更好的理解 alias 和 root 的拼接行为:

指令行为
root /path;文件路径 = /path + $uri(会保留 location 中的路径)
alias /path;文件路径 = /path + $uri去掉 location 前缀的部分

所以对于 /vtour/ 这类子路径映射到某个独立目录的情况,优先使用 alias

好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!

在这里插入图片描述

Read more

Python操作国产金仓数据库(KingbaseES)全流程:搭建自己的网页数据管理(增删改查)

Python操作国产金仓数据库(KingbaseES)全流程:搭建自己的网页数据管理(增删改查)

Python操作国产金仓数据库(KingbaseES)全流程:搭建自己的网页数据管理(增删改查) Python操作国产金仓数据库(KingbaseES)全流程:搭建自己的网页数据管理(增删改查),现在国产化替代是大趋势,国产数据库的应用越来越广,金仓数据库(KingbaseES)作为其中的佼佼者,在政务、金融这些领域用得特别多。今天我就带大家从0到1,一步步实现用Python操作KingbaseES数据库,还会基于Flask框架搭一个可视化的网页管理系统,数据的增删改查全流程都能搞定,不管你是Python开发者还是数据库管理员,跟着学都能用得上。 前言     中电科金仓(北京)科技股份有限公司(以下简称“电科金仓”)成立于1999年,是成立最早的拥有自主知识产权的国产数据库企业,也是中国电子科技集团(CETC)成员企业。电科金仓以“提供卓越的数据库产品助力企业级应用高质量发展”为使命,致力于“成为世界卓越的数据库产品与服务提供商”。     电科金仓自成立起始终坚持自主创新,专注数据库领域二十余载,具备出色的数据库产品研发及服务能力,核心产品金仓数据库管理系统Kingbas

By Ne0inhk
【python】全流程图文安装教程

【python】全流程图文安装教程

目录 一、前言 二、下载安装 2.1 官网下载 2.2 安装python 2.3 验证python是否可用 三、如何编写python文件代码 3.1 打开IDLE 3.2 新建脚本文件 3.3 编写脚本 3.4 运行脚本 一、前言 在数字化浪潮中,编程已成为一项“新通用技能”,而Python因其近乎零门槛的入门体验,成为无数人打开代码世界的第一把钥匙。无论你是想自动化办公、分析数据,还是探索人工智能,只需一行 print("Hello World") ,就能见证计算机对你的首次回应。 二、下载安装 2.1 官网下载

By Ne0inhk
GraphQL在Python中的完整实现:从基础到企业级实战

GraphQL在Python中的完整实现:从基础到企业级实战

目录 摘要 1 引言:为什么GraphQL是API设计的未来 1.1 GraphQL的核心价值定位 1.2 GraphQL技术演进路线图 2 GraphQL核心技术原理深度解析 2.1 Schema定义语言与类型系统 2.1.1 Schema定义原则 2.1.2 类型系统架构 2.2 Resolver解析机制深度解析 2.2.1 Resolver执行模型 2.2.2 Resolver执行流程 2.3 Strawberry vs Graphene框架深度对比 2.3.1 架构设计哲学对比 2.3.2 框架选择决策树 3 实战部分:

By Ne0inhk
Python保姆级下载安装教程-->Windows版本

Python保姆级下载安装教程-->Windows版本

Windows版本保姆级下载安装 一、下载Python  1、点击下载官网地址 Python官方网站地址https://www.python.org/downloads/ 2、官网页面如下: 3、点击下载界面: 上面最新的版本是3.14.2版本,一般来说新版较之老版优化了一些内容且版本向下兼容,但是不建议下载最新版本,因为python在很多地方使用时没有更新到最新版本,向下兼容性并不好,但也不要太低版本的,很多不适用。 点击Downloads,选择适合自己电脑系统的版本,我的电脑是Windows系统,就选择了Windows,点击后会跳转到另一个页面 【Stable Releases】:稳定发布版本,是官方完成全面测试、修复已知 Bug 的成熟版本,运行稳定、风险低,无论入门学习还是机器视觉项目开发,都优先选这个版本; 【Pre-releases】:预发布版本,属于测试阶段的 “体验版”,可能包含新功能但存在未修复的 Bug,稳定性差,小白或做实际项目(如机器视觉开发)千万别选,易出现代码报错、

By Ne0inhk