假设我有一个名为example.com的域名以及以下“n”个子域名,所有子域名都是“A”记录到相同的IP地址(假设服务器A)。
a.example.com,b.example.com,c.example.com ... z.example.com
还有另一个子域名'email.example.com',其CNAME设置为'mailgun.org'。
现在我的服务器A具有以下nginx配置,其中我想将所有HTTP请求转发到HTTPS。
server {
listen 80;
return 301 https://$host$request_uri;
}
用于处理443的单个子域请求的代码块集。
server {
listen 443 ssl;
server_name a.example.com;
//SSL Details
location / {
root /var/www/a/;
}
除了指向mailgun.org的email.example.com之外的其他子域。
现在, http://email.example.com他们将被重定向到http://mailgun.com。 (在DNS级别)
http://example.com他们将被重定向到https://example.com。 (在服务器级别)。
http://a.example.com他们将被重定向到https://a.example.com。 (在服务器级别)
问题: 访问http://example.com后,当有人试图访问http://email.example.com时,他们会被浏览器重定向到https://email.example.com。由于我无法控制mailgun.org,因此我可以处理针对email.example.com的https请求
无论如何设置nginx配置,除了email.example.com之外,HTTP的每个请求都将被重定向到HTTPS?
答案 0 :(得分:1)
好的,我发现了问题。
我将example.com的nginx配置更改为不包含子域。
ie。,更改了以下行
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
如下。,
add_header Strict-Transport-Security "max-age=31536000;" always;
因此浏览器现在不会向子域添加标题。