Plesk での HTTP/2 対応

概要

HTTP/2(別名 HTTP/2.0、HTTP 2.0)とは、World Wide Web で使用される HTTP ネットワークプロトコルの 2 番目のメジャーバージョンです。2015 年 5 月に承認された HTTP/2 は、HTTP 1.1 にあったいくつかの重大なパフォーマンスの問題に対処するために開発されました。このプロトコルの利点は、こちらで説明しています。現在、HTTP/2 は大部分の主要ウェブブラウザでサポートされています。

Plesk 顧客向けの HTTP/2 のサポートは、Plesk 12.5.30 アップデート #28 で実装され、最新バージョンの nginx を必要とします。

注:HTTP/2 がサポートされるのは SSL サイトのみで、非 SSL サイトは引き続き HTTP/1.x で処理されます。

ウェブサイトで HTTP/2 のサポートを有効化するには

nginx ウェブサーバが最新バージョンに更新され、実行されていることを確認します。これは、[ツールと設定]>[サーバコンポーネント]および[ツールと設定]>[サービス管理]ページで実行します。

components

services

サーバに root として SSH ログインし、以下のコマンドユーティリティを使用して Plesk で HTTP/2 サポートを有効化します。

# plesk bin http2_pref enable

最後のステップで、nginx ウェブサーバは最新のセキュアな暗号で TLS プロトコルを使用するように調整され、ウェブサーバの構成全体が再構築され、御社および御社の顧客のウェブサイトのうち、SSL をサポートするすべてのサイトが HTTP/2 に移行されます。

コマンドの出力結果で、HTTP/2 への切り替え中に発生したエラーまたは警告を確認してください。何か問題があった場合、以下の「トラブルシューティング」セクションを参照してください。

注:ドメインで HTTP/2 が有効化されているかどうかは、https://tools.keycdn.com/http2-test などのオンラインサービスを使用して簡単にチェックできます。

HTTP 1.x に戻して HTTP/2 を無効化したい場合は、以下のコマンドを使用します。

# plesk bin http2_pref disable
ALPN 対応

Google Chrome で HTTP/2 を正しく使用するには、nginx ウェブサーバが ALPN(Application-Layer Protocol Negotiation)に対応している必要があります。詳しくは、ALPN のドキュメントを参照してください。

nginx ウェブサーバでの ALPN 対応は、OS がCentOS 7、RedHat Enterprise Linux 7、Ubuntu 14.04、Ubuntu 16.04、Debian 8 の Plesk で有効です。

つまり、Plesk による HTTP/2 は、これらの OS 上のすべてのモダンブラウザで機能します。

トラブルシューティング

ウェブサイトに対して HTTP/2 サポートを有効化する際に問題が発生したり、https://tools.keycdn.com/http2-test でサイトをチェックした結果 HTTP 1.x プロトコルのみが有効であると判明した場合には、以下の手順に従ってトラブルシューティングを行ってください。

  1. ドメインの[ホスティング設定]セクションでウェブサイトに対して SSL サポートが有効化されていることを確認します。HTTP/2 がサポートされるのは SSL サイトのみで、非 SSL サイトは引き続き HTTP/1.x で処理されます。これは nginx ウェブサーバとウェブブラウザによる制約です。
  2. nginx が有効化されていることを確認します。

    # plesk sbin nginxmng -s

    必要に応じて有効化します。

    # plesk sbin nginxmng -e

  3. OpenSSL パッケージのバージョンが 1.0.1 以降であることを確認します。

    # rpm -qa | grep openssl

    openssl-1.0.1e-42.el6_7.4.x86_64

  4. /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php にカスタム構成テンプレートがないことを確認します。もしあれば削除して、構成ファイルを再作成します。

    # plesk sbin httpdmng --reconfigure-all

    あるいは、カスタマイゼーションを削除したくない場合、ファイル /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php を以下のように変更できます。

    以下のような行を探します。

    ($OPT['default'] ? ' default_server' : '') .($OPT['ssl'] ? ' ssl' : '') ?>;

    これを、以下の 2 行に置き換えます。

    ($OPT['default'] ? ' default_server' : '') .($OPT['ssl'] ? ' ssl' : '') .

    ($OPT['ssl'] && $VAR->domain->physicalHosting->proxySettings['nginxHttp2'] ? ' http2' : '') ?>;

    その後、以下のコマンドを実行します。

    # plesk bin http2_pref enable

  5. HTTP/2 を有効化した状態で SSL 接続に問題がある場合、/etc/nginx/conf.d/ssl.conf またはカスタマイズした nginxDomainVirtualHost.phpssl_ciphers ディレクティブに以下の値があることを確認します。

    ssl_ciphers EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:CHACHA20:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES;

  6. HTTP/2 を有効化した後で、サイトが特定のブラウザで機能しなくなった場合は、HTTP/2 のサポートに必要な暗号とプロトコルが使用可能になっていない可能性があります。HTTP/2 を有効化した後で、使用可能なプロトコルおよび TLS 暗号のリストをセットアップするには、sslmng ユーティリティを使用します。たとえば、Plesk とまったく同じ暗号のリストを使用したい場合は、以下のようなコマンドになります。

    #plesk sbin sslmng --services=nginx --custom --ciphers="EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20" --protocols="TLSv1 TLSv1.1 TLSv1.2"

    構成は /etc/nginx/conf.d/ssl.conf ファイルに保存されます。このファイルを手動で編集することはお勧めしません。

  7. 上記の手順で解決しない場合、Plesk テクニカルサポートまでお問い合わせください。