我当前的设置是针对特定域的 nginx,它将所有请求重定向到 https。但我有几个子域直接指向 Google 的应用服务(电子邮件、日历、驱动器)。这些不能是 https,因为 Google 当然没有这些证书。我的最终目标是拥有一个 HSTS 标头,其中包含主域的 includeSubdomains 部分。
要实现这一点:不要让这些子域名的 CNAME 指向 ghs.google.com(email.example.com、calender.example.com、drive.example.com),而是推荐选项。我想将它们指向我自己的服务器并重定向到特定(但个性化)的 URL:
- https://mail.google.com/a/example.com
- https://www.google.com/calendar/hosted/example.com
- https://drive.google.com/a/example.com
问题 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:我该使用哪些选项?还有其他选项可以减少重复配置的大小吗?