我正在尝试使用 Nginx 实现 SSL 终止。我需要强制所有流量都通过 https,所以我在我的 Nginx 配置中有这个规则:
if ($scheme = http) {
rewrite ^ https://$server_name$request_uri? permanent;
}
这对浏览器非常有效,当我直接使用 https 访问 api 时也是如此。但是,如果我使用其他 HTTP 方法(POST、PUT 等)通过 http 访问 api,它会将它们视为 GET 方法。我知道发生这种情况是因为返回了 301,但我如何才能让所有 HTTP 方法都发生这种强制 SSL 行为?
最佳答案
解决了!结果表明 HTTP 代码 307 的行为与 303 完全相同,但不需要更改 HTTP 方法。返回该代码反而解决了问题:
return 307 https://$server_name$request_uri;
关于http - 使用 Nginx 为所有 HTTP 方法终止 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38214752/