Ubuntu 16.04のNginxでHTTP / 2を有効にする

HTTP / 2は、現在廃止されたHTTP / 1.1プロトコルの新しいバージョンであり、1999年に標準化されました。それ以来、Web上で多くの変更が行われました。私たちのアプリケーションは以前よりも複雑なので、それに対処するには、基になるトランスポートプロトコルの変更が必要でした。HTTP / 2の最も重要なことは、エンドユーザーがWebページを高速化できることです。

簡単に言うと、HTTP / 25つの主要な機能を追加します。

  • 単一の永続的な接続
  • 多重化
  • ヘッダー圧縮
  • リソースの優先順位付け
  • トランスポート層を保護します(ブラウザーでのみ有効)

これらすべての機能を説明することはこのチュートリアルの範囲外ですが、このトピックをさらに掘り下げたい場合は、高性能ブラウザネットワーキングブック-HTTP / 2からの抜粋をお勧めします

このガイドでは、Ubuntu 16.04(Xenial)に最新の安定したバージョンのNginxをインストールし、自己署名SSL証明書を生成し、NginxでHTTP / 2プロトコルを有効にしelinks、HTTPクライアントとして機能するテキストベースのブラウザーをインストールします。

Nginxをインストールする

Nginxの最新の安定バージョンをインストールするには、かなりの数のコマンドを発行する必要があります。

  1. パッケージとリポジトリの署名に使用されるNginx公開PGP鍵をダウンロードし、それをパッケージマネージャーが使用するキーリングに追加して、リポジトリからダウンロードされたパッケージの信頼性を検証する必要があります。

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. ファイルシステムからPGPキーを削除します。

    rm nginx_signing.key
    
  3. 新しいリポジトリを追加

    printf "deb http://nginx.org/packages/ubuntu/ xenial nginx \ndeb-src http://nginx.org/packages/ubuntu/ xenial nginx \n" >> /etc/apt/sources.list.d/nginx.list
    
  4. パッケージリストを更新し、Nginxをインストールします。

    apt update && apt install nginx -y
    
  5. Nginxのバージョンを確認するには、以下を使用できます。

    nginx -v 
    # nginx version: nginx/1.10.1
    

    すべてがうまくいけば1.10.xnginx -vコマンドを実行すると、出力のようなパターンが表示されます。

自己署名証明書とHTTP / 2

HTTP / 2仕様を実装するためのブラウザを強制するものではありませんHTTP / 2を TLS上で、すべての主要なブラウザにのみ実施することを決定したHTTP / 2を、任意のTLSバージョンのみTLS上ではなく、TLS 1.2以上。

架空のexample.comドメイン用の自己署名証明書を作成します。本番環境では、有効なドメインが必要であり、信頼されたCAを使用します。

  1. 秘密鍵を生成します。

    openssl genrsa -aes128 -out example.com.key 2048
    

    このコマンドを実行した後、パスフレーズを2回入力する必要があります。パスフレーズは煩わしいため、削除します。

  2. 秘密鍵からパスフレーズを削除します。

    openssl rsa -in example.com.key -out example.com.key
    
  3. 証明書署名要求(CSR)を生成します。

    openssl req -new -sha256 -key example.com.key -out cert-request.csr 
    

    単一ドメイン証明書を作成しているので、共通名フィールドをexample.comドメインと同じに設定する必要があります

  4. 証明書を作成します。

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. 証明書と秘密鍵を整理します。

    mkdir -p /etc/ssl/testing/private && mkdir /etc/ssl/testing/certs
    mv example.com.key /etc/ssl/testing/private && mv example.com.crt /etc/ssl/testing/certs
    
  6. nginx仮想ホストディレクトリを作成する

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. 次に、実行nano /etc/nginx/nginx.confしてディレクティブを見つけますinclude /etc/nginx/conf.d/*.conf;。このディレクティブの下に、include /etc/nginx/sites-enabled/*;保存(CTRL + O)を追加してから、終了(CTRL + X)します。

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. このコマンドでディレクトリexample.com.conf内に呼び出されるファイルを作成し、次のコードをコピーして貼り付けます。/etc/nginx/sites-availablenano /etc/nginx/sites-available/example.com.conf

    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;
        root /var/www/html;
        index index.nginx-debian.html;
    
        ssl_certificate /etc/ssl/testing/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/testing/private/example.com.key;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_prefer_server_ciphers on;
    }
    

    おめでとうございます。これでHTTP / 2対応のWebサーバーができました。HTTPS仮想ホスト内http2listenディレクティブにパラメーターを追加すると、HTTP / 2サポートが提供されます。

  9. /etc/nginx/sites-available/example.com.conf次のコマンドでシンボリックリンクを作成します。

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. テスト構成構文

    nginx -t
    
  11. Nginxを再起動して変更を適用します。

    systemctl restart nginx
    
  12. ファイルにexample.comドメインを追加/etc/hosts

    echo '127.0.0.1    example.com' >> /etc/hosts
    

仮想ホストをテストするには、テキストベースのブラウザー-elinksが必要です。

  1. elinksをインストールするには、次のコマンドを使用します。

    apt install elinks
    
  2. example.com仮想ホストをテストするには、以下を実行します。

    elinks https://example.com
    
  3. elinksブラウザーを終了するには、キーボードのqを押してからEnterを押します。

HTTP / 2をテストする

サーバーがアドバタイズするプロトコルを確認するには、opensslツールキットを使用するのが最も簡単な方法です。

    openssl s_client -connect example.com:443 -nextprotoneg ''

このコマンドの出力では、次のように表示されます。

    CONNECTED(00000003)
    Protocols advertised by server: h2, http/1.1      

表示するにはHTTP / 2をアクションには、ブラウザの開発者ツールを使用することができます。HTTP / 2プロトコルはh2またはHTTP/2.0識別子で示されます。dev-toolsでネットワークパネルを開き、ページを更新します。

結論

ここで、Nginx構成でHTTP / 2を有効にするのが「簡単」であることを認識する必要がありますが、それは全体像の全体ではありません。まず、強力な暗号スイートを使用してサーバーでTLS / SSLを有効にすることを検討し、ブラックリストに登録された暗号を使用していないことを確認してください。サーバーで強力なTLS / SSLを有効にしてはじめて、HTTP / 2の有効化について考えることができます



Leave a Comment

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