NginxでHTTP2対応のリバースプロキシを行う

2 min read

こんにちは、無能です。
最近の記事が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

いけました〜〜〜!!!
今日は自分の送別会があるので、心置きなくアルコール摂取できそうです!
それではまた。よろしくお願いします。