Ubuntu 18.04のNginxにBrotliサポートを追加

Brotli(br)は、Gzip、Zopfli、Deflateの代替としてGoogleが開発した新しいオープンソース圧縮アルゴリズムです。インターネットエンジニアリングタスクフォース(IETF)でRFC 7932として正式に定義されています。Brotliに関するGoogleのケーススタディでは、現在の方法よりも最大26%小さい圧縮率で、CPU使用率が少ないことが示されています。

Nginxには公式サポートはありませんが、nginxにサポートを追加するために使用できるngx_brotliと呼ばれるGoogleによって開発されたサードパーティモジュールがあります。

このガイドでは、Brotliサポートを新しいUbuntu 18.04 LTS VultrインスタンスのNginxに追加する方法を示します。

注: このガイドではjohndoe、サンプルユーザーおよびexample.comサンプルドメインを使用します。あなたの名前に従ってそれらを交換してください。

必要条件

  • Ubuntu 18.04 LTSサーバー
  • Nginxバージョン1.11.5以降
  • A/ AAAAレコードが設定されたドメイン名
  • TLS証明書

あなたが始める前に

Ubuntuのバージョンを確認してください。

lsb_release -ds
# Ubuntu 18.04 LTS

アクセス権をnon-root持つ新しいユーザーアカウントを作成し、sudoそれに切り替えます。

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

をユーザー名に置き換えjohndoeてください

オペレーティングシステムのソフトウェアを更新します。

sudo apt update && sudo apt upgrade -y

タイムゾーンを設定します。

sudo dpkg-reconfigure tzdata

必要なビルドツールとパッケージをインストールします。

sudo apt install -y build-essential git apt-transport-https socat

手順1-Acme.shをインストールし、Let's EncryptからTLS証明書を取得する

Brotliでは、HTTPSをセットアップして使用する必要があります。この部分では、Let's Encryptから信頼できる証明書を取得します。

Acme.shをダウンロードしてインストールします。

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

バージョンを確認してください。

acme.sh --version
# v2.8.0

のRSAおよびECDSA証明��を取得しexample.comます。

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength 2048

# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --accountemail [email protected] --ocsp-must-staple --keylength ec-256

上記のコマンドを実行すると、証明書とキーは次の場所にあります。

  • RSA: /etc/letsencrypt/example.com
  • ECC / ECDSA: /etc/letsencrypt/example.com_ecc

ステップ2 –公式のNginxリポジトリからNginxをインストールする

公式のNginxリポジトリから最新のメインラインNginxをダウンロードしてインストールします。

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \ndeb-src https://nginx.org/packages/mainline/ubuntu/ `lsb_release -sc` nginx \n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx nginx-module-geoip nginx-module-image-filter nginx-module-njs nginx-module-perl nginx-module-xslt

バージョンを確認してください。

sudo nginx -v
# nginx version: nginx/1.15.2

Nginxを有効にして起動します。

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

ステップ3 – Brotliソースコードをダウンロードしてコンパイルする

Nginxをインストールしたら、Brotliモジュール(ngx_brotli)を動的Nginxモジュールとしてビルドする必要があります。Nginxバージョン1.11.5以降、完全なNginxソフトウェアをコンパイルせずに、個々の動的モジュールをコンパイルすることが可能です。次のいくつかのステップでは、完全なNginxをコンパイルせずに、ダイナミックとしてBrotliモジュールを構築します。

メインラインNginxソースコードの最新バージョンをダウンロードして抽出します。

wget https://nginx.org/download/nginx-1.15.2.tar.gz && tar zxvf nginx-1.15.2.tar.gz

NginxパッケージとNginxソースコードのバージョン番号が一致していることが非常に重要です。Nginx 1.15.2を公式のNginxリポジトリからインストールした場合は、同じバージョンのソースコード(この場合は1.15.2)をダウンロードする必要があります

を削除しnginx-1.15.2.tar.gzます。

rm nginx-1.15.2.tar.gz

ngx_brotliGitHubからのクローン。

git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli && git submodule update --init && cd ~

Nginxソースコードディレクトリに移動します。

cd ~/nginx-1.15.2

必要なライブラリをダウンロードします。

sudo apt install -y libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev

ngx_brotli動的モジュールとしてコンパイルし、Nginxモジュールの標準ディレクトリにコピーします/etc/nginx/modules

./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules
sudo cp objs/*.so /etc/nginx/modules

にファイルをリストすると、/etc/nginx/modulesおよびが表示さngx_http_brotli_filter_module.songx_http_brotli_static_module.soます。

ls /etc/nginx/modules

644すべての.soファイルに対して権限をに設定します。

sudo chmod 644 /etc/nginx/modules/*.so

ステップ4 – Nginxを構成する

NginxでBrotliサポートを構成する準備ができました。

sudo vim /etc/nginx/nginx.conf次の2つのディレクティブを実行してファイルの先頭に追加し、新しいBrotliモジュールをロードします。

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

構成をテストします。

sudo nginx -t

のドキュメントルートディレクトリをexample.com作成index.htmlし、その中にコンテンツをいくつか作成します。

sudo mkdir -p /var/www/example.com
sudo -s
echo "Hello from example.com" >> /var/www/example.com/index.html
exit

の仮想ホストを作成しますexample.com

sudo vim /etc/nginx/conf.d/example.com.conf

次の設定を入力します。

server {
  listen 80;
  server_name example.com; # Replace with your domain name
  return 301 https://$server_name$request_uri;
}

server {    
  listen 443 ssl http2;
  server_name example.com; # Replace with your domain name

  root /var/www/example.com; # Replace with your document root

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;

  brotli on;
  brotli_static on;
  brotli_types text/plain text/css text/javascript application/javascript text/xml application/xml image/svg+xml application/json;
}

構成をテストします。

sudo nginx -t

Nginxをリロードします。

sudo systemctl reload nginx.service

Webブラウザーでサイトにアクセスし、開発者ツールのネットワークタブを開きます。Content-Encoding: br応答ヘッダーに表示されます。これは、ブロトリ圧縮が機能していることを示しています。

Ubuntu 18.04のNginxにBrotliサポートを追加

Ubuntu 18.04のNginxにBrotliサポートを追加

WebサーバーでBrotli圧縮を有効にしました。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。