Top > About > サーバー構築メモ > HTTP/3対応のnginxのインストール

HTTP/3対応のnginxのインストール

Webサイト高速化のためHTTP/3に対応できるnginxをインストールしていく。
なお、HTTP/3には以下のようなメリットがあるらしい。


nginxバージョンの確認

nginxでHTTP/3に対応するためにはバージョン1.25以上が必要となる。
apt でインストールされるnginxのバージョンを以下のコマンドで確認する。

sudo apt update
sudo apt info nginx
user@ubuntu:~$ sudo apt info nginx
Package: nginx
Version: 1.24.0-2ubuntu7
Priority: optional
...

バージョンが1.25未満の場合は、以下aptリポジトリの更新を行ってからnginxをインストールする。


aptリポジトリの更新

バージョンが1.25よりも古い場合は、以下手順のコマンドで最新nginxの安定版をaptのリポジトリに追加する。(詳細はnginx公式参照)

sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

上記を実行したらaptでインストールされるnginxのバージョンを再度確認する。

sudo apt update
sudo apt info nginx
user@ubuntu:~$ sudo apt info nginx
Package: nginx
Version: 1.26.1-2~noble
Priority: optional
...

バージョンが1.25以上であればOK。


nginxのインストール

sudo apt install nginx

インストール後 nginx -v でバージョンが1.25以上であることを確認する。

user@ubuntu:~$ nginx -v
nginx version: nginx/1.26.1

certbotのインストール

HTTP/3には必須ということと、今どきSSL対応しないはありえないのでLet'sEncryptのSSL証明書を発行する
certbotによりSSL証明書を自動更新できるようにする。

インストール

sudo apt install certbot
sudo apt install python3-certbot-nginx

インストールが完了したら証明書を発行する
ここで指定するドメインでアクセスできる必要があるので事前にドメインの設定を確認しておく
サブドメインを追加する場合は過去分もまとめて再実行する

sudo certbot certonly --nginx -d xxxxx.net -d sub1.xxxxx.net -d sub2.xxxxx.net

発行に成功すると /etc/letsencrypt/live/ にSSL証明書が発行される

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Requesting a certificate for xxxxx.net and 2 more domains

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/xxxxx.net/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/xxxxx.net/privkey.pem
This certificate expires on 2024-10-25.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.

<その他のコマンド>

■削除(※コマンド実行後対象を選ぶ)
sudo certbot delete

■更新
sudo certbot renew

■更新のテスト
sudo certbot renew --dry-run

■タイマーの確認
sudo systemctl status certbot.timer

疎通確認

/etc/nginx/nginx.conf を以下のように編集する。HTTP/3対応としての要点は以下。


http {

    ssl_certificate	 /etc/letsencrypt/live/xxxxx.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/xxxxx.net/privkey.pem;
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers on;

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        http2 on;

        listen 443 quic reuseport;
        listen [::]:443 quic reuseport;
        http3 on;

        add_header Alt-Svc 'h3=":443"; ma=86400';

        location / {
            ・・・
        }
    }
}

なお設定ファイルに問題がないことを以下コマンドで確認できる

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

設定ファイルの以下のどちらかで反映できる

--設定ファイルの反映
sudo nginx -s reload

--nginxの再起動
sudo systemctl restart nginx

設定を反映したら通信がHTTP/3になっていることを確認する。要点は以下。