为什么https重定向触发器?

时间:2019-09-22 20:28:01

标签: nginx asp.net-core nginx-config

我在使用asp.net内核的kestrel / nginx上。我有一些不需要https重定向的网址,这就是为什么我有以下nginx conf

server {
    listen *:80;
    server_name     example.com *.example.com;

    location / {
        add_header Strict-Transport-Security max-age=15768000;
        return 301 https://example.com$request_uri;
    }

    location /DirectDownload/ {
        proxy_pass  http://example;
        limit_req   zone=one burst=10 nodelay;
    }
}

在Startup.cs中,我有

  • UseHsts()
  • 否UseHttpsRedirection()

奇怪的是,这在过去一直有效。不幸的是,响应头并没有告诉我应用程序的哪一部分触发了307 hsts重定向...我明显缺少什么吗?

这是唯一的:80 nginx conf。

这是标题的示例: enter image description here

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

HSTS适用于整个服务器

https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security

  

服务器通过HTTPS响应标头字段“ Strict-Transport-Security”将HSTS策略传达给用户代理。[1] HSTS策略指定了一段时间,用户代理只能以安全的方式访问服务器。[2]使用HSTS的网站一定不能接受明文HTTP,并且不能通过HTTP连接或系统地将用户重定向到HTTPS。其结果是无法执行TLS的用户代理将无法再连接到该站点。

307响应直接来自Chrome: https://www.troyhunt.com/understanding-http-strict-transport/

  

这是Chrome所说的“我什至不打算发出该请求,而是将其更改为HTTPS然后再试一次”,这就是我们提出的第二个请求。这很关键:Chrome拒绝通过不安全的HTTP协议发出第一个请求。