ServerFault 上有很多问题涵盖了这个问题的一部分,但我很难将它们拼凑在一起。我有一个安装了通配符 SSL 证书的全新 nginx 服务器。一切正常。我想创建强制执行以下内容的重定向规则:
1) 必须强制执行 www 或子域。所以,subdomain.domain.com 和 www.domain.com 没问题。domain.com 本身不是,应该自动添加 www。
2) 无论子域如何,都必须在整个站点中强制执行 HTTPS。
换句话说:
ttp://domain.com >> ttps://www.domain.com
ttp://subdomain.domain.com >> ttps://subdomain.domain.com
ttps://domain.com >> ttps://www.domain.com
ttps://subdomain.domain.com(这很好)
根据 Nginx 重写陷阱页面和此站点上的其他答案,我一直在使用此配置代码:
server {
listen 80;
server_name *.domain.com;
return 301 https://$server_name$request_uri;
}
还有这个:
server {
listen 80;
server_name ~^(.*)domain\.com;
return 301 https://$server_name$request_uri;
}
我也尝试过使用 $host 而不是 $server_name。
所有这些都可以很好地重定向 http > https,但它始终默认为https://domain.com,无论子域或 www 是什么。想法?