Nginx 1.9.15 ~ 1.10.x 上 HTTP/2 後,於 iOS 8 / Safari 的 POST,會出現網路無法連接到伺服器的錯誤。
這個問題一直追 iOS 也沒用,主要問題出在 Nginx。
- 註:要說錯也不是 Nginx 的錯,Nginx 也是為了減少被攻擊的風險,所做的事情
Nginx HTTP/2 POST 於 iOS 出現無法連接伺服器的問題
這個問題一開始都從 iOS / App / Safari 的部份去追,沒有想到 Nginx 的問題,查看下述幾篇關於 HTTP2 和 瀏覽器的問題:
- nsurlsession - HTTP/2 support for iOS 8
- HTTP/2 protocol 兼容性一覽表 edge opera chrome firefox safari internet explorer IE UC
最後找到此篇,此篇有清楚的說明 Nginx 為何會產生這個問題的原因:談談 Nginx 的 HTTP/2 POST Bug
想了解原因的,就自行參考上述連結即可(簡單說就是 HTTP2 定義 POST DATA 可能造成攻擊發生,所以 Nginx 之前的版本有做防止,卻會造成此問題)。
紀錄簡單快速的解法:
- 升級到 Nginx 1.10.2 以上即可