举一些例子,如:
location ~ ^/([\d]+)/ { rewrite ^/[\d]+/([\d]+)/(.*)$ #replacement proxy_pass https://httpbin.org/anything/$1/$2/$3 # ? }
捕获组会是什么?nginx会替换它们吗?合并它们吗?在那种情况下我会有3个捕获组吗?顺序会是什么?我不清楚我将如何引用上面3个捕获组中的每一个。引用捕获组的最后一个位置是proxy_pass。
mbzjlibv1#
每次Nginx对另一个正则表达式求值时,数值捕获都会被重置。location表达式中的数值捕获将在proxy_pass语句求值时丢失。仅定义了$1和$2,并且它们是从rewrite表达式中获取的。要使捕获跨多个正则表达式持久化,请使用(?<name>...)语法为其命名。例如:
location
proxy_pass
$1
$2
rewrite
(?<name>...)
location ~ ^/(?<name>[\d]+)/ { rewrite ^/[\d]+/([\d]+)/(.*)$ ...; proxy_pass https://httpbin.org/anything/$name/$1/$2; }
1条答案
按热度按时间mbzjlibv1#
每次Nginx对另一个正则表达式求值时,数值捕获都会被重置。
location
表达式中的数值捕获将在proxy_pass
语句求值时丢失。仅定义了$1
和$2
,并且它们是从rewrite
表达式中获取的。要使捕获跨多个正则表达式持久化,请使用
(?<name>...)
语法为其命名。例如: