GNU/Linux >> Linux の 問題 >  >> Debian

Debian8JessieサーバーでNginxを使用してHTTP2プロトコルを有効にする方法

このチュートリアルでは、Debian8サーバーでNginxを使用してHTTP/ 2プロトコルを有効にし、Webページの読み込みを高速化する方法を示します。 2つの要件があります。

  • OpenSSL1.0.2で構築されたNginxバージョン1.9.5以降
  • HTTPSが有効

これらに1つずつ取り組みましょう。

JessieBackportsRepoからのNginxのインストール

ALPN(Application Layer Protocol Negotiation)は、サーバーがWebブラウザーとHTTP/2プロトコルをネゴシエートできるようにするTLS拡張機能です。 ALPNがないと、WebサーバーとWebブラウザの両方がHTTP / 2をサポートしている場合でも、HTTP/2接続を確立できません。 OpenSSLライブラリは、バージョン1.0.2でのALPNをサポートしています。

Debian8にはOpenSSL1.0.1があります。 OpenSSLのバージョンを確認するには、

を実行します。
openssl version

システムにOpenSSL1.0.2をインストールする必要はないことに注意してください。 OpenSSL1.0.2で構築されたNginx1.9.5以降のみが必要です。 Nginxは、バージョン1.9.5でHTTP/2のサポートを追加しました。デフォルトのDebian8リポジトリにはNginx1.6.2があります。幸い、Jessieバックポートリポジトリは、OpenSSL1.0.2lで構築されたNginx1.10.3を提供します。

このリポジトリを追加するには、ソースリストファイルを作成します。

sudo nano /etc/apt/sources.list.d/jessie-backports.list

このファイルに次の行を追加します。

deb http://ftp.debian.org/debian jessie-backports main

ファイルを保存して閉じます。次に、パッケージインデックスを更新し、JessieバックポートリポジトリからNginxをインストールします。

sudo apt update
sudo apt -t jessie-backports install nginx

Nginxのバージョンを確認し、パラメーターを構成します。

sudo nginx -V

出力:

nginx version: nginx/1.10.3
built with OpenSSL 1.0.2l 25 May 2017
TLS SNI support enabled

Nginx.orgリポジトリにはDebian8用の最新バージョンのNginxが含まれていますが、そのパッケージはOpenSSL 1.0.1に対して構築されているため、ALPNをサポートしていません。

Debian8へのSSL証明書のインストール

Let’sEncryptによって発行された無料のSSL証明書をインストールできます。まず、JessieBackportsリポジトリからDebian8にLet’s Encryptクライアント(Certbot)をインストールします。 Python-certbot-nginx Certbot用のNginxプラグインです。

sudo apt install -t jessie-backports certbot python-certbot-nginx

これで、Nginx仮想ホストを構成した場合は、Nginxプラグインを使用して、以下のようにSSL証明書を取得してインストールします

sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address

説明:

  • --nginx :Nginxプラグインを使用する
  • --agree-tos :Let'sEncryptの利用規約に同意する
  • --redirect :新しく認証された仮想ホストのすべてのHTTPトラフィックをHTTPSに自動的にリダイレクトします。
  • --staple-ocsp :OCSPステープリングを有効にします
  • --must-staple :OCSPMustStaple拡張機能を証明書に追加します
  • --email :登録と復旧の連絡に使用されるメール

HTTP2プロトコルの有効化

デフォルトでは、CertbotはNginx用にHTTP/2を構成しません。 HTTP / 2を有効にするには、Nginx仮想ホストファイルを編集します。次のディレクティブを見つけます。

listen 443 ssl;

次に、以下のようにhttp2を追加します。

listen 443 ssl http2;

ファイルを保存して閉じます。 Nginxをリロードします。

sudo systemctl reload nginx

テスト

サイトが実際にHTTP2プロトコルを使用していることをどのように知っていますか?

  • FirefoxまたはGoogleChromeで、サイトのページを読み込んでから、Ctrl+Shift+Iを押します。 開発者ツールを開くには 、ネットワークをクリックします タブ。ドメインで使用されているプロトコルを確認できます。
  • GoogleChromeにHTTP/2およびSPDYインジケーター拡張機能をインストールすることもできます。
  • FirefoxにHTTP/2インジケーター拡張機能をインストールします。
  • KeyCDNによるオンラインHTTP/2テストツールは、HTTP/2とALPNがサイトでサポートされているかどうかを教えてくれます。

キャッシュされたオブジェクトが誤ってHTTP/1.1プロトコルでマークされている可能性があるため、ブラウザのキャッシュをクリアする必要がある場合があることに注意してください。

サーバープッシュを有効にする方法

HTTP/2にはサーバープッシュと呼ばれる機能が付属しています 、これにより、Webサーバーは、Webブラウザーが要求しなかったが、Webページをロードするために必要なリソースを送信できます。たとえば、WebブラウザがHTMLドキュメントを要求した場合、Webサーバーはクライアントが関連付けられたCSSファイルを必要とし、それをHTMLドキュメントと一緒に送信することを認識しているため、WebブラウザがCSSの要求を送信する必要がなくなります。旅行が減ります。

ここでは、例としてWordPressを使用します。 WordPressサイトには、一般的に次のリソースが必要です。

  • style.css:テーマディレクトリのルートにあるメインスタイルシート。
  • jquery.js:JQueryライブラリ
  • jquery-migrate.min.js:古いJQuery
  • wp-embed.min.js:動画の埋め込み用

これらのリソースをクライアントにプッシュするには、serverに次のディレクティブを追加します ブロック。 27を独自のWordPressテーマ名に置き換えます。

http2_push /wp-content/themes/twentyseventeen/style.css;
http2_push /wp-includes/js/jquery/jquery.js;
http2_push /wp-includes/js/jquery/jquery-migrate.min.js;
http2_push /wp-includes/js/wp-embed.min.js;

ファイルを保存して閉じます。次に、変更を有効にするためにNginxを再起動します。

sudo systemctl restart nginx

functions.phpに次のコードを追加する必要があることに注意してください WordPressのCSSおよびJavaScriptファイルからバージョン番号を削除するファイル。 WordPressが更新されたときに、これらのファイルにバージョン番号が追加されていると、サーバープッシュは機能しません。

// Remove WP Version From Styles        
add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 );
// Remove WP Version From Scripts
add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 );

// Function to remove version numbers
function sdt_remove_ver_css_js( $src ) {
        if ( strpos( $src, 'ver=' ) )
                $src = remove_query_arg( 'ver', $src );
        return $src;
}

サーバープッシュのテスト

Google Chromeブラウザでページを読み込み、Ctrl+Shift+Iを押します 開発ツールを開き、[ネットワーク]タブをクリックします。 F5を押してリロードします。以下のスクリーンショットからわかるように、サーバープッシュは私のWebサイトの1つで機能しています。 「メモリキャッシュから」と表示されている場合は、それを右クリックしてブラウザのキャッシュをクリアし、リロードします。

改善

CertbotNginxプラグインはまだ成熟していません。弱いキー交換パラメーターを使用しているため、Nginxプラグインを使用した後にSSLラボテストでBを取得しました。 Mozilla SSL構成ジェネレーターは、最新のSSL構成を作成するのに役立つ優れたツールです。

それでおしまい!このチュートリアルが、Debian8サーバーでNginxを使用してHTTP/2を有効にするのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読してください。


Debian
  1. Proxmox VE4をDebian8にインストールする方法(Jessie)

  2. Debian11にNginxを使用してHTTPGitサーバーをインストールする方法

  3. Debian 8(Jessie)でGooglePageSpeedモジュールを使用してnginxを構築する方法

  1. Debian 8にNginxをインストールする方法(Jessie)

  2. NGINXでHTTP2を有効にする方法

  3. PleskでPHP-FPMを使用してNginxを有効にする方法

  1. Debian9または10でSSHを有効にする方法

  2. Debian9でVSFTPDを使用してFTPサーバーをセットアップする方法

  3. Debian11にNginxを使用してWonderCMSをインストールする方法