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にGraylogサーバーをインストールする方法

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

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

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

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

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

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartショッピングカートプラットフォームをUbuntu 16.04にインストールする方法

LiteCartは、PHP、jQuery、およびHTML 5で記述された無料のオープンソースのショッピングカートプラットフォームです。シンプルで軽量、使いやすいeコマースソフトウォー

DebianでNFS共有をセットアップする

DebianでNFS共有をセットアップする

NFSはネットワークベースのファイルシステムであり、コンピューターはコンピューターネットワークを介してファイルにアクセスできます。このガイドでは、NFを介してフォルダーを公開する方法について説明します

Fedora 28にMatomo Analyticsをインストールする方法

Fedora 28にMatomo Analyticsをインストールする方法

別のシステムを使用していますか?Matomo(旧Piwik)は、Google Analyticsのオープンな代替手段であるオープンソースの分析プラットフォームです。Matomoのソースはoでホストされています

Ubuntu 14.10へのMcMyAdminのインストール

Ubuntu 14.10へのMcMyAdminのインストール

McMyAdminは、サーバーの管理に使用されるMinecraftサーバーコントロールパネルです。McMyAdminは無料ですが、複数のエディションがあり、一部はパイです

LinuxでTeamTalk Serverをセットアップする

LinuxでTeamTalk Serverをセットアップする

TeamTalkは、ユーザーが高品質のオーディオ/ビデオ会話、テキストチャット、ファイルの転送、および画面の共有を可能にする会議システムです。それは

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

CentOS 7サーバーにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ubuntu 17.04でRbenv、Rails、MariaDB、Nginx、SSL、およびPassengerを使用してRubyをインストールおよび構成する方法

Ruby on Railsは、プログラマーの生産性を向上させるために開発されたRubyの人気のあるWebフレームワークです。ただし、さまざまな宝石と依存関係を取得する

Vultr VPSにアクセスする方法

Vultr VPSにアクセスする方法

Vultrは、VPSにアクセスして構成、インストール、および使用するためのいくつかの異なる方法を提供します。アクセス認証情報VPS arのデフォルトのアクセス認証情報

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

CentOS 7、Ubuntu 16.04、Debian 9にGolang 1.8.3をインストールする方法

GolangはGoogleが開発したプログラミング言語です。汎用性、シンプルさ、信頼性のおかげで、Golangは最も人気のあるものの1つになりました

Debian、CentOS、およびFreeBSDでSudoを使用する方法

Debian、CentOS、およびFreeBSDでSudoを使用する方法

LinuxおよびUnixのシステム管理者の間では、sudoユーザーを使用してサーバーにアクセスし、コマンドをルートレベルで実行することは非常に一般的です。sudの使用

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

Ubuntu 16.04 LTSにDokuWikiをインストールする方法

別のシステムを使用していますか?DokuWikiは、データベースを必要としないPHPで記述されたオープンソースのWikiプログラムです。データをテキストファイルに保存します。ドクウィク

DebianでのChrootのセットアップ

DebianでのChrootのセットアップ

この記事では、Debianでchroot jailをセットアップする方法を説明します。私はあなたがDebian 7.xを使っていると思います。Debian 6または8を実行している場合、これは機能する可能性があります、bu

DebianにPiVPNをインストールする方法

DebianにPiVPNをインストールする方法

はじめにDebianでVPNサーバーを設定する簡単な方法は、PiVPNを使用することです。PiVPNは、OpenVPNのインストーラーおよびラッパーです。それはあなたのための簡単なコマンドを作成します

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

Ubuntu 18.04 LTSにCyber​​Panelをインストールして構成する方法

別のシステムを使用していますか?はじめにCyber​​Panelは、オープンソースでありOpenLiteSpeedを使用する市場で最初のコントロールパネルの1つです。なんてこった

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

Ubuntu 16.04 LAMP VPSにBigTree CMSをインストールする方法

別のシステムを使用していますか?BigTree CMS 4.2は、高速で軽量な無料のオープンソースのエンタープライズグレードのコンテンツ管理システム(CMS)であり、

Debian 9でソースからBrotliをビルドする方法

Debian 9でソースからBrotliをビルドする方法

別のシステムを使用していますか?Brotliは、Gzipよりも圧縮率が高い新しい圧縮方法です。そのソースコードはGithubで公開されています。ティ

PleskサーバーでHTTP / 2を有効にする方法

PleskサーバーでHTTP / 2を有効にする方法

PleskはネイティブのHTTP / 2サポートを備えています。PleskでのHTTP / 2のロールアウトは、他のコンポーネントに比べてはるかに簡単ですが、その導入プロセスには慎重な計画が必要です

FreeBSD 12にosTicketをインストールする方法

FreeBSD 12にosTicketをインストールする方法

別のシステムを使用していますか?osTicketは、オープンソースのカスタマーサポートチケットシステムです。osTicketのソースコードはGithubで公開されています。このチュートリアルでは

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の未来は、日々成長を続けています。