http - 使用 Nginx 为所有 HTTP 方法终止 SSL

标签 http ssl nginx https

我正在尝试使用 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/

相关文章:

nginx - 在 Windows 上的 Nginx 上启用 http2

c# - 以多线程方式从函数返回 HTTP 响应数据 (C#/VB)

Apache 提供了错误的 SSL-Cert

nginx - 从上游服务器读取自定义 header

c# - ASP.NET 和中间人

c++ - 来自自定义库的 Openssl 和 gsoap

php - Nginx 1.11 - nginx.conf 文件已更改

c++ - 适用于 Mac 的 C++ 中的 HTTP 查询

javascript - Node.js 请求返回对象

JQuery 停留在 CORS 预检和 IIS 幽灵响应