Nginx域方案重定向不包括子域

时间:2017-01-24 09:39:34

标签: nginx dns subdomain cname

假设我有一个名为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?

1 个答案:

答案 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;

因此浏览器现在不会向子域添加标题。