Nginx (engine-x)は、オープンソースの高性能HTTPサーバー、リバースプロキシ、およびIMAP/POP3プロキシサーバーです。 Nginxの優れた機能は、安定性、豊富な機能セット、シンプルな構成、低メモリ消費です。
Brotli Googleによって作成されたオープンソースの圧縮アルゴリズムです。 Brotliは、gzipよりも優れたロスレス圧縮を提供し、現在、主要なブラウザーとWebサーバーでサポートされています。
Brotliのパフォーマンスの詳細:
- Akamaiのブログ投稿。
- Brotliに関するCloudflareの投稿。
- Mozillaのブログ投稿。
このチュートリアルでは、NginxウェブサーバーでBrotli圧縮アルゴリズムのサポートを追加する方法を段階的に説明します。 brotli圧縮アルゴリズムをサポートするカスタムnginxパッケージを構築します。最新のUbuntuバージョンを使用し、さらにDebianオペレーティングシステム用のnginxパッケージをビルドします。
- Ubuntu 18.04
- root権限
何をしますか?
- ビルドの依存関係をインストールする
- ngx_brotliを使用してNginxをインストールする
- Nginxリポジトリを追加
- Nginxとngx_brotliをダウンロード
- ngx_brotliサポートを使用してNginxをビルドする
- Nginxをインストールし、ngx_brotliサポートを有効にする
- Nginx仮想ホストを構成する
- テスト
このガイドで最初に必要なことは、ビルドの依存関係をシステムにインストールすることです。
Ubuntuリポジトリを更新してから、以下のaptコマンドを使用してすべてのパッケージビルドの依存関係をインストールします。
sudo apt update
sudo apt install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
すべてのパッケージがインストールされるのを待ちます。
このステップでは、Brotli圧縮アルゴリズムをサポートするカスタムnginxパッケージをUbuntuシステムにインストールします。また、公式のnginxリポジトリからダウンロードできるnginxパッケージの最新の安定バージョンを使用します。
Nginxリポジトリを追加
nginxリポジトリを追加する前に、以下のコマンドを使用してnginxキー記号を追加してください。
curl -L https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
次に、vimエディターを使用して「/etc/apt/sources.list.d」ディレクトリに新しいnginxリポジトリファイル「nginx.list」を作成します。
vim /etc/apt/sources.list.d/nginx.list
以下に構成を貼り付けます。
deb http://nginx.org/packages/ubuntu/ bionic nginx deb-src http://nginx.org/packages/ubuntu/ bionic nginx
保存して終了します。
次に、ubuntuリポジトリを更新します。
sudo apt-get update
Nginxリポジトリが追加されました。
Nginxおよびngx_brotliソースファイルをダウンロード
次に、aptコマンドを使用してnginxリポジトリからNginxパッケージをダウンロードします。
'/ usr / local / src'ディレクトリに移動し、以下のaptコマンドを使用してNginxソースをダウンロードします。
cd /usr/local/src
sudo apt source nginx
次に、nginxに必要なすべてのパッケージ依存関係をインストールします。
sudo apt build-dep nginx -y
そして、すべてのインストールが完了したら、GitHubから「ngx_brotli」ソースコードのクローンを作成します。
git clone --recursive https://github.com/google/ngx_brotli.git
Nginxとngx_brotliがダウンロードされました。
ngx_brotliサポートを使用してNginxをビルドする
次に、デフォルトのNginxビルドルールを編集する必要があります。パッケージのビルドルールにngx_brotliを追加する必要があります。
'/ usr / local / src / nginx- *'ディレクトリに移動し、debian'rules'設定を編集します。
cd /usr/local/src/nginx-*/
vim debian/rules
これで、' config.env.nginx用の2つのビルド環境が得られます。 'および'config.env.nginx_debug '。 ngx_brotliの「--add-module=」オプションを両方の構築環境に追加します。
--add-module=/usr/local/src/ngx_brotli
保存して終了します。
これで、ngx_brotliをサポートするnginxパッケージをコンパイルしてビルドする準備が整いました。
以下のdpkgコマンドを実行します。
sudo dpkg-buildpackage -b -uc -us
注:
- -b:バイナリのみをビルドし、ソースファイルは作成しません。
- -uc:署名されていない.buildinfoおよび.changesファイル。
- -us:署名されていないソースパッケージ。
ビルドが完了すると、以下に示すように、「/ usr / local/src」ディレクトリにnginx-*。debパッケージが追加されます。
ls -lah
NginxをインストールしてBrotliサポートを有効にする
ngx_brotliを使用したnginxビルドが完了しました。以下のdpkgコマンドを使用してnginx-*。debパッケージをインストールしてください。
cd /usr/local/src/
sudo dpkg -i *.deb
ngx_brotliをサポートするNginxがインストールされました。
次に、「/ etc / nginx」構成ディレクトリに移動し、構成ファイル「nginx.conf」を編集します。
cd /etc/nginx/
vim nginx.conf
以下の「http{...}」セクション内に構成を追加して、nginxでngx_brotliを有効にします。
brotli on; brotli_comp_level 6; brotli_static on; brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;
保存して終了します。
nginx構成をテストし、エラーがないことを確認します。
nginx -t
brotli圧縮のサポートが有効になりました。
このステップでは、ドメイン名nginx.hakase-labs.ioの新しい仮想ホストを作成しようとします。
注:
- Brotli圧縮はHTTPSサイトのみをサポートしているため、ドメイン名の証明書ファイルがあることを確認してください。そうでない場合は、無料のLetsencryptSSL証明書を生成できます。
'/ etc / nginx'構成ディレクトリに移動し、新しい仮想ホスト構成'brotli.conf'を作成します。
cd /etc/nginx/
vim conf.d/brotli.conf
次のnginx仮想ホスト構成をそこに貼り付けます。
# Redirect HTTP to HTTPS Nginx
server { listen 80; server_name nginx.hakase-labs.io; return 301 https://$host$request_uri; } # SSL configuration server { listen 443 ssl http2; server_name nginx.hakase-labs.io;
ssl_certificate /etc/letsencrypt/live/nginx.hakase-labs.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/nginx.hakase-labs.io/privkey.pem; # Improve HTTPS performance with session resumption ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; # Enable server-side protection against BEAST attacks ssl_prefer_server_ciphers on; ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; # Disable SSLv3 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# web root directory location / { root /usr/share/nginx/html; } }
保存して終了します。
注:
- 独自のドメインでドメイン名を変更します。
- SSL証明書のパスを変更します。
次に、nginx構成をテストし、エラーがないことを確認してから、サービスを再起動します。
nginx -t
systemctl restart nginx
新しいnginx仮想ホストが追加されました。
Webブラウザーを開き、ドメイン名を入力します。私の名前は次のとおりです。
http://nginx.hakase-labs.io
これで、https接続にリダイレクトされます。ページを右クリックして、[要素の検査]をクリックします '。 'ネットワークをクリックします 'タブをクリックしてページをリロードします。
リクエストの詳細をクリックすると、以下に示すように、ウェブサーバーからすべてのリクエストとレスポンスのヘッダーが表示されます。
「応答ヘッダー」セクションに、brotliサポート用の「content-encoding:br」が表示されます。
別のテストが必要な場合は、以下に示すようにcurlコマンドを使用できます。
curl -H 'Accept-Encoding: br' -I https://nginx.hakase-labs.io
そして、brotliサポートの結果「content-encoding:br」が表示されます。
Ubuntu18.04でのBrotli圧縮サポートを使用したNginxのインストールが正常に完了しました。
- https://github.com/google/ngx_brotli
- https://www.babak.io/blog/