我正在尝试使用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行为?
答案 0 :(得分:1)
解决!结果是HTTP代码307的行为与303完全相同,但不需要更改HTTP方法。返回该代码代替了解决问题:
return 307 https://$server_name$request_uri;