我想在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)
答案 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。这表明仍然有其他设置,即使使用上述配置并覆盖这些设置中的任何一个,也可能仍在发生。您需要找出设置的条件。