带通配符的 nginx 流图

abu*_*bin 2 nginx regex pcre

我对正则表达式真的很不好。我正在尝试在 nginx 中执行此操作:

stream {

    map $ssl_preread_server_name $name {
        api.dom1.com dom1_backend;
        *.dom2.com dom2_backend;
    }

    upstream dom1_backend {
        server api.dom1.com:443;
    }

    upstream dom2_api_backend {
        server *.dom3.com:443;
    }

    server {
        listen 443;
        proxy_pass $name;
        ssl_preread on;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何让 dom2 工作?我只需要将通配符域映射回通配符域。

意味着任何 *.dom2.com 都会转到 *.dom3.com

Mic*_*ton 5

为了使用主机名,您应该指定特殊hostnames参数map。这允许以您期望的方式解释星号通配符。

map $ssl_preread_server_name $name {
    hostnames;
    api.dom1.com dom1_backend;
    *.dom2.com dom2_backend;
}
Run Code Online (Sandbox Code Playgroud)