插件窝 干货文章 Nginx proxy_pass正则表达式变量提取详解

Nginx proxy_pass正则表达式变量提取详解

Nginx proxy_pass 正则表达式 变量提取 反向代理    来源:    2025-07-20

Nginx proxy_pass正则表达式变量提取详解

在Nginx配置中,proxy_pass指令常与正则表达式配合使用来实现灵活的反向代理功能。本文将详细介绍如何使用正则表达式提取变量并在proxy_pass中应用这些变量。

1. 正则表达式位置匹配

Nginx支持在location块中使用正则表达式,语法如下:

location ~ ^/user/(\d+)/profile$ {
    # 使用$1引用第一个捕获组
    proxy_pass http://backend/user_$1;
}

2. 命名捕获组

Nginx 1.11.2+版本支持命名捕获组,语法更清晰:

location ~ ^/user/(?\d+)/profile$ {
    # 使用$user_id引用命名捕获组
    proxy_pass http://backend/user_$user_id;
}

3. 多级路径代理示例

以下示例展示如何代理多级路径:

location ~ ^/api/(v\d+)/(.*)$ {
    # $1对应版本号,$2对应剩余路径
    proxy_pass http://api_backend/$1/$2;
}

4. 注意事项

  • 正则表达式location块必须以~或~*开头
  • 捕获组从1开始编号
  • proxy_pass中的URI部分会被替换,除非使用变量
  • 高版本Nginx支持命名捕获组,可提高可读性

5. 实际应用场景

这种技术常用于:

  1. 多版本API代理
  2. 用户ID动态路由
  3. 多租户系统代理
  4. 动态路径重写