带有正则表达式的 NGinx 位置指令

NGinx location directive with Regex

我正在寻找一种方法让我的 NGinx LB 进行以下转换。

首先,这个可以做吗?

我尝试了以下配置,但没有按预期工作。

server {
    listen 443;
    server_name example.com;
    ssl on;
    ssl_certificate /etc/ssl/certs/example-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/example-selfsigned.key;
    
    location /t/[a-z.]+/common/ {

        rewrite ^(/t/.*)/common/(.*)$ https://192.168.1.3:9443/?t= break;

        proxy_pass https://192.168.1.3:9443/;

    }
}

如有任何帮助,我们将不胜感激!

正则表达式匹配位置应使用 ~(或 ~* 用于不区分大小写的匹配)修饰符。当你想重写一个要用 proxy_pass 指令代理的 URI 时,你不应该将方案或域部分添加到你的 rewrite 指令中。尝试以下操作:

location ~ ^/t/(?<t>[a-z.]+)/common(?<path>/.*) {
    rewrite ^ $path?t=$t break;
    proxy_pass proxy_pass https://192.168.1.3:9443;
}