為了oss 更好的訪問體驗,oss計畫公升級支援http/2。目前發現低版本go語言應用存在缺陷導致http/2請求處理異常,已知影響面如下(如果您訪問oss的方式,是使用oss官方sdk,則無需關心以下內容):
使用go語言應用使用https 訪問oss服務並且客戶端開啟支援http/2 的,建議將go版本公升級至go1.8 及以上版本。
(如果使用了aliyunoss 官方提供的go 語言sdk 則無需關心此問題)
使用docker registry(部署為registry或mirror)並使用oss作為映象儲存的使用者(
建議將registry版本公升級至2.6.0 及以上版本,公升級步驟為: "用新映象啟動容器"。
缺陷原因:http/2 的 :path pseudo header rfc 協議規定是不支援absoluteuri 的,低版本go語言應用存在缺陷,可能會傳送:path 欄位為absoluteuri 的請求,因此會造成h2 請求發生stream error: protocol error 錯誤,導致請求失敗。
缺陷詳情:詳見
修復情況:目前go 語言及使用go 語言的docker registry已經在新版本fix 了這個問題
go:fix:
目前在 release-branch.go1.8 已經包含這個修復。
docker registry:
在2.6.0之前版本存在問題,在2.6.0及後續版本修復了這個問題。
修復版本:go1.8 及後續版本,docker registry 2.6.0 及後續版本。
Nginx 支援Http2協議
要開啟http 2協議支援,需要在nginx 1.10以上版本並且需要openssl庫的版本在1.0.2以上編譯。http 2.0只支援開啟了https的 檢視當前openssl版本 需要openssl庫的版本在1.0.2以上 openssl version可以看到我這裡的版本正好是1.0.2 滿足...
公升級nginx以支援http2
相比 http 1.x,http 2 在底層傳輸做了很大的改動和優化 http 2 採用二進位制格式傳輸資料,而非 http 1.x 的文字格式。二進位制格式在協議的解析和優化擴充套件上帶來更多的優勢和可能。http 2 對訊息頭採用 hpack 進行壓縮傳輸,能夠節省訊息頭占用的網路的流量。而 h...
NGINX Plus 現在完全支援 HTTP 2
早些時候,我們發布了支援 http 2 協議的 nginx plus r7。作為 http 協議的最新標準,http 2 的設計為現在的 web 應用程式帶來了更高的效能和安全性。lctt 譯註 開源版本的 nginx 1.95 也支援 http 2 了。nginx plus 所實現的 http 2...