Nginx HTTPS 对特定文件扩展名的期望

Nginx HTTPS expectation for specific files extesions

我正在使用以下规则强制使用 HTTPS:

if ($http_x_forwarded_proto != 'https') {
    return 301 https://$host$request_uri;
}

效果很好。但我需要在 HTTP 中提供一些资产(例如所有 .XML 文件)。如何为这些文件创建预期?

我试过了:

location ~* /sitemap*.xml {
    .
    .
break;
}

但是没用

[更新] 我忘了提供更多细节......我正在使用 AWS 和 ELB,因此 LB 接收 HTTPS 请求并在内部传递到 "HTTP" 到我的 EC2。所以,在 NGINX 中,我只监听 80 端口。

您应该为其他所有内容指定一个单独的位置:

location ~* \.xml$ {
    ...
}

location / {
    if ($http_x_forwarded_proto != 'https') {
        return 301 https://$host$request_uri;
    }
}