2016-07-06 58 views
0

我想使用Nginx實現SSL終止。我需要強制通過https所有流量,所以我有這個規則在我的Nginx的配置:所有HTTP方法的SSL終止與Nginx

if ($scheme = http) { 
     rewrite ^ https://$server_name$request_uri? permanent; 
} 

這對於瀏覽器的偉大工程,以及當我以https直接打API。但是,如果我通過使用其他HTTP方法(POST,PUT等)的請求通過http命中api,它會將它們視爲GET方法。我知道這是因爲301被返回而發生的,但是我怎麼能仍然對所有HTTP方法保持這種強制SSL行爲?

+0

對於API,重定向不鼓勵,因爲只隱藏問題!您應該在API的http條目上回答錯誤以避免安全漏洞。 – Tom

回答

1

解決!發現HTTP代碼307的行爲與303完全相同,但不需要更改HTTP方法。返回該代碼而不是解決問題:

return 307 https://$server_name$request_uri; 
+0

準確地說,'永久性'國旗問題301代碼 –