在不知道基域的情况下将子域重定向到子域

在不知道基域的情况下将子域重定向到子域

如果我想在 Nginx 中重定向 *.plex.example.com -> plex.example.com,我可以这样做

server {
    listen                  443 ssl http2;
    listen                  [::]:443 ssl http2;
    server_name             *.plex.example.com;

    return                  301 https://plex.example.com$request_uri;
}

我该如何更普遍地做到这一点?是否有一个代码片段可以重定向上述示例并说 *.plex.test.net -> plex.test.net。更一般地说,重定向 *.plex.domain.tld -> plex.domain.tld。

不确定这是否可行,但如果你能弄清楚如何重定向 *.subdomain.domain.tld -> subdomain.domain.tld,则可以获得加分。

答案1

除非您拥有有效的域名通配符证书/密钥,否则您提供的配置将无法正常工作,否则浏览器会发出安全投诉*.plex.example.com。您可以尝试在命名正则表达式匹配中捕获主域名:

server {
    listen 443 ssl http2;
    ssl_certificate </path/to/certificate>;
    ssl_certificate_key </path/to/key>;
    server_name  ~.*\.plex\.(?<domain>[^\.]+\.[^\.]+)$;
    return 301 https://plex.$domain$request_uri;
}

但同样,您需要为所有可能的域名提供有效的证书。

相关内容