GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS8のNginxでBrotli圧縮を有効にする方法

Brotliは、Gzip、Zopfli、およびDeflateの代替としてGoogleによって開発された汎用のロスレス圧縮アルゴリズムであり、LZ77アルゴリズムの最新のバリアント、ハフマンコーディング、および2次コンテキストモデリングの組み合わせを使用してデータを圧縮します。現在利用可能な最良の汎用圧縮方法に匹敵します。速度はデフレートと似ていますが、より高密度の圧縮を提供します。

BrotliはMITライセンスの下でオープンソースです。

Nginxには公式のサポートはありませんが、Googleが開発したngx_brotliというサードパーティのモジュールがあり、これを利用してNginxにサポートを追加できます。

このチュートリアルでは、CentOS8サーバー上のNginxウェブサーバーにBrotliサポートを追加する方法を説明します。

注: このガイドでは、「johndoe" サンプルユーザーとして、「 example.com 「ドメインの例として。名前に応じて置き換えてください。

要件
  • CentOS8サーバー
  • Nginxバージョン1.11.5以降
  • Aのドメイン名 / AAAA 設定されたレコード
  • TLS証明書
初期ステップ

CentOSのバージョンを確認してください:

cat /etc/centos-release
# CentOS Linux release 8.0.1905 (Core)

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

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

オペレーティングシステムパッケージ(ソフトウェア)を更新します。これは、オペレーティングシステムのデフォルトのソフトウェアパッケージの最新の更新とセキュリティ修正を確実に行うための重要な最初のステップです。

sudo dnf update -y

CentOSオペレーティングシステムの基本的な管理に必要ないくつかの重要なパッケージをインストールします。

sudo dnf install -y curl wget vim git unzip socat bash-completion epel-release socat && sudo dnf groupinstall "Development Tools"

ステップ1-Acme.shをインストールし、Let'sEncryptからTLS証明書を取得します

Brotliでは、HTTPSを設定して使用する必要があります。このパートでは、Let'sEncryptから信頼できる証明書を取得します。

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.6

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

# 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 / ECCSA:/etc/letsencrypt/example.com_ecc
ステップ2–公式のNginxリポジトリからNginxをインストールします

公式のNginxリポジトリから最新のメインラインNginxをダウンロードしてインストールする必要があります :

前提条件をインストールします:

sudo yum install yum-utils

yumリポジトリーをセットアップするには、/etc/yum.repos.d/nginx.repoという名前のファイルを作成します。 次の内容で:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

デフォルトでは、安定したnginxパッケージのリポジトリが使用されます。メインラインのnginxパッケージを使用する必要があります。メインラインソースを使用するには、次のコマンドを実行します。

sudo yum-config-manager --enable nginx-mainline

nginxをインストールするには、次のコマンドを実行します:

sudo yum install -y nginx

Nginxのバージョンを確認してください:

sudo nginx -v
# nginx version: nginx/1.17.8

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.17.8.tar.gz && tar zxvf nginx-1.17.8.tar.gz

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

nginx-1.17.8.tar.gz:を削除します

rm nginx-1.17.8.tar.gz

ngx_brotliのクローンを作成します GitHubから:

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

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

cd ~/nginx-1.17.8

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

sudo dnf install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

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.soが表示されます およびngx_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が表示されます 応答ヘッダー内。これは、Brotli圧縮が機能していることを示しています。

それでおしまい。 CentOS8システムでBrotli圧縮を有効にしました。

リンク
  • https://brotli.org/
  • https://github.com/google/brotli
  • https://github.com/google/ngx_brotli
  • https://en.wikipedia.org/wiki/Brotli

Cent OS
  1. CentOS7にNginxでPhorumをインストールする方法

  2. UbuntuとCentOSのNginxでHTTP/2を有効にする方法

  3. CentOS 7 に LEMP スタックをインストールする方法

  1. CentOS8にNginxをインストールして構成する方法

  2. CentOS7にVagrantをインストールする方法

  3. CentOS8にGiteaをインストールする方法

  1. CentOS8にMemcachedをインストールする方法

  2. CentOS7にNginxをインストールする方法

  3. CentOS7にApacheをインストールする方法