Nginx 为什么https重定向会触发?

Nginx 为什么https重定向会触发?,nginx,asp.net-core,nginx-config,Nginx,Asp.net Core,Nginx Config,我在使用asp.net内核的kestrel/nginx上。我有一些不需要https重定向的URL,这就是为什么我有以下nginx配置 server { listen *:80; server_name example.com *.example.com; location / { add_header Strict-Transport-Security max-age=15768000; return 301 https://ex

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

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()
  • 没有可用的HttpSreDirection()
奇怪的是,这在过去是有效的。不幸的是,响应头没有告诉我的应用程序的哪个部分触发307 hsts重定向。。。我有什么明显的遗漏吗

这是唯一的:80 nginx conf

以下是标题的示例:


谢谢你的帮助

HSTS适用于整个服务器

HSTS策略由服务器通过名为“Strict Transport Security”(严格传输安全)的HTTPS响应标头字段与用户代理通信。[1]HSTS策略指定一段时间,在此期间,用户代理应仅以安全方式访问服务器。[2]使用HST的网站决不能接受明文HTTP,也不能通过HTTP连接或系统地将用户重定向到HTTPS。其结果是,无法执行TLS的用户代理将无法再连接到站点

307响应直接来自Chrome:

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


HSTS适用于整个服务器

HSTS策略由服务器通过名为“Strict Transport Security”(严格传输安全)的HTTPS响应标头字段与用户代理通信。[1]HSTS策略指定一段时间,在此期间,用户代理应仅以安全方式访问服务器。[2]使用HST的网站决不能接受明文HTTP,也不能通过HTTP连接或系统地将用户重定向到HTTPS。其结果是,无法执行TLS的用户代理将无法再连接到站点

307响应直接来自Chrome:

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


在这里勾选接受答案:2019年,大多数浏览器会将HTTP页面标记为不安全页面(这会吓跑用户),你真的还想使用HTTP吗。Http是有问题的,即使不是必需的(例如,当您在html代码中混合使用Http和https时)。HSTS的要点是防止浏览器甚至调用http(通常在用户重定向之前)。你真的有那么多的流量,这会给你带来严重的问题吗?如果是这样的话,CDN可能是你更好的选择。HSTS也有一个非常积极的缓存,如果你应用一次,它会一直保留到过期(通常默认为1年)@Tseng不,这与性能无关。为Tolino电子阅读器(使用ChromeV30)提供了一些下载。所有通过https传输的文件都已损坏-这是一个bug。如果我想支持Tolino电子阅读器,我必须绕开网站其他部分的https。在这里检查接受的答案:2019年,大多数浏览器会将HTTP页面标记为不安全页面(这会吓跑你的用户),你真的还想使用HTTP吗。Http是有问题的,即使不是必需的(例如,当您在html代码中混合使用Http和https时)。HSTS的要点是防止浏览器甚至调用http(通常在用户重定向之前)。你真的有那么多的流量,这会给你带来严重的问题吗?如果是这样的话,CDN可能是你更好的选择。HSTS也有一个非常积极的缓存,如果你应用一次,它会一直保留到过期(通常默认为1年)@Tseng不,这与性能无关。为Tolino电子阅读器(使用ChromeV30)提供了一些下载。所有通过https传输的文件都已损坏-这是一个bug。如果我想支持Tolino电子阅读器,我必须绕过网站其他部分的https。哦,这太糟糕了。因此,为了在某些特定实例中提供定期https下载,我想我可以使用子域并排除子域。谢谢哦,那太糟糕了。因此,为了在某些特定实例中提供定期https下载,我想我可以使用子域并排除子域。谢谢