仅子域在nginx上的HSTS

时间:2018-12-24 16:37:25

标签: ubuntu nginx subdomain hsts

我想在nginx上仅在SUBDOMAIN(test.example.com)上允许HSTS,而在DOMAIN上不允许,因为我根本没有任何主机链接到我的应用程序(example.com)中的原始域,这意味着我在我的Nginx配置中只有dubdomains。

我试图按预期在目录中添加标题:

server {
    listen 80;
    listen [::]:80;
    server_name test.example.com;
    add_header Strict-Transport-Security max-age=31536000;
....
....
}

但是没有用。

在这种情况下该怎么办?如果不使用对我的应用程序的直接域访问权限,是否可以启用HSTS?还是我错过了什么?

nginx版本:nginx / 1.10.3(Ubuntu)

1 个答案:

答案 0 :(得分:0)

类似的事情会起作用:

http {
  index index.html;

  server {
    listen 80;
    listen [::]:80;
    server_name example.com test.example.com;
  }

  server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;
  }

  server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name test.example.com;
    add_header Strict-Transport-Security max-age=31536000;
  }
}

由于HSTS标头仅在第三个服务器块中给出,因此仅在该server_name匹配时才发送。它将不会发送给第一个(端口80)服务器块,也不会发送给第二个域(端口443)顶级域。

但是,这仍然不能回答为什么在您当前的配置中它仍然显示max-age = 0。这表明仍然有其他设置,即使使用上述配置并覆盖这些设置中的任何一个,也可能仍在发生。您需要找出设置的条件。