在 Nginx 中實現 HTTP/2 反向代理

2 min

language: ja bn en es hi pt ru zh-cn zh-tw

您好,我是無能。

最近的文章似乎都在努力支援HTTP/2...

$ curl https://soulminingrig.com/
curl: (92) Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c]

然後...

什麼是 HTTP/2 - JPNIC

升級只能在 HTTP 的情況下使用。

由於 Nginx 和 Apache 之間是透過HTTP1.1連接的,所以包含了這個標頭資訊,導致在進行HTTPS標準的HTTP/2通訊時,curl會報錯。

所以我想,如果把這個刪掉是不是就行了?試了一下,果然成功了。

簡單來說,就是之前以包含 HTTP 通訊時的標頭資訊的形式進行傳輸,如果調整成符合HTTP2的形式,應該就能成功吧?大概就是這個意思。

如果是日文資訊,我認為 NIC 的文章是最容易理解的。

Nginx 設定

似乎只需要將其設定在location指令中,並排除Upgrade標頭即可。

雖然可能不需要,但由於是HTTP通訊,我還是明確地設定了。

    proxy_hide_header Upgrade;
    proxy_http_version 1.1;

來吧,curl!

這樣一來,執行curl -I就會...

$ curl -I https://soulminingrig.com/
HTTP/2 200 
server: nginx/1.27.0
date: Thu, 21 Nov 2024 22:44:47 GMT
content-type: text/html
content-length: 15375
vary: Accept-Encoding
last-modified: Thu, 21 Nov 2024 03:45:14 GMT
etag: "3c0f-627641819d3e9"
accept-ranges: bytes
vary: Accept-Encoding
content-security-policy: upgrade-insecure-requests
alt-svc: h3=":443"; ma=86400
x-content-type-options: nosniff

成功了!!!

今天有我的歡送會,所以可以盡情地喝酒了!

那麼,下次再見。請多關照。

Related Posts