nginx 将多个 https 子域名重定向到不同的 URL

nginx 将多个 https 子域名重定向到不同的 URL

我当前的设置是针对特定域的 nginx,它将所有请求重定向到 https。但我有几个子域直接指向 Google 的应用服务(电子邮件、日历、驱动器)。这些不能是 https,因为 Google 当然没有这些证书。我的最终目标是拥有一个 HSTS 标头,其中包含主域的 includeSubdomains 部分。

要实现这一点:不要让这些子域名的 CNAME 指向 ghs.google.com(email.example.com、calender.example.com、drive.example.com),而是推荐选项。我想将它们指向我自己的服务器并重定向到特定(但个性化)的 URL:

问题 1:您不建议这么做吗?还有其他可能性吗?

但是,如果希望每个域指向不同的 URL,则在 nginx 中重定向域的推荐方法是为每个域设置单独的服务器块。但是,即使对于简单的重定向,这些 ssl-server 块也相当大:

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name email.example.com;

    access_log /var/log/nginx/ghs.example.com/access.log;
    error_log  /var/log/nginx/ghs.example.com/error.log;

    ssl_certificate      /etc/letsencrypt/live/ghs.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/ghs.example.com/privkey.pem;

    gzip off;
    add_header Strict-Transport-Security "max-age=15811200 includeSubDomains";

    include server.d/letsencrypt.conf;

    return 302 https://mail.google.com/a/example.com;
}

重复3次。

我更希望这个块有server_name email.example.com calendar.example.com drive.example.com;一个重定向,将它们分隔到特定的 URL。但 nginx 文档总是相当明确地 不建议这个。并说我应该使用单独的服务器块。

问题2:我该使用哪些选项?还有其他选项可以减少重复配置的大小吗?

相关内容