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

Ubuntu18.04でHTTP/2サポートを使用してNginxを設定する方法

Nginxは、トラフィックの多いサイトにサービスを提供するために人気のある、堅牢で高速、信頼性が高く、動的なオープンソースWebサーバーです。さらに、構成の容易さ、高いスケーラビリティ、および無数のプロトコルのサポートでよく知られています。
Nginxでサポートされるプロトコルの中には、新しいHTTP / 2プロトコルがあり、その主な利点は以前のHTTP1.1よりも優れています。コンテンツが豊富なWebサイトに必要な高速転送速度。

このガイドでは、HTTP/2をサポートする安全なNginxサーバーのインストールとセットアップについて詳しく説明します。

前提条件

まず、フライトチェックを行って、次のものがあるかどうかを確認しましょう

  • Ubuntu18.04LTSのサーバーインスタンス
  • Nginxバージョン1.9.5以降(Nginxのバージョンを確認するには、nginx -vを実行します )、Ubuntu18.04へのNginxのインストールをお読みください。
  • OpenSSLバージョン1.0.2以降(opensslバージョンを使用してバージョンを確認してください)
  • sudo権限を持つ通常のroot以外のユーザー
  • 完全修飾ドメイン名(FQDN)この場合、crazytechgeek.infoを使用します GoDaddyから購入しました。

    ドメイン名のAレコードは、サーバーのIPアドレスを指している必要があります。 crazytechgeek.infoは216.200.116.207を指しています。

  • SSL証明書(自己署名証明書またはLet’s Encrypt SSLからの証明書。同様に、別のプロバイダーから1つ購入できます。

ステップ1– HTTP/2.0サポートを有効にする

まず、Nginxサーバーブロックを

で構成していることを前提としています。
/etc/nginx/sites-available/your_domain

この場合、サーバーブロックは/etc/nginx/sites-available/crazytechgeek.infoです。 。

お気に入りのテキストエディタを使用して、サーバーブロックファイルを開き、listenを見つけます。 示されているディレクティブ

最初のディレクティブはIPv6接続を示し、2番目のディレクティブはIPv4接続用です

次に、各ディレクティブを変更して、http2を含めます。 示されているフラグ

これにより、サポートされているブラウザでHTTP/2を使用するようにNginxに指示されます

構成ファイルを保存して、エディターを終了します。

次に、/etc/nginx/sites-available/defaultを開きます ファイルして同じ変更を加えます

テキストエディタを保存して終了します。

どのNginxファイルにも構文エラーがないことを確認するために、以下のコマンドを実行してください

$ sudo nginx -t

出力

ステップ2–古くて安全でない暗号を削除する

HTTP / 2が期待どおりに機能するためには、HTTP/2ブラックリストに載っている古くて安全でない暗号の使用を避ける必要があります。暗号スイートは、トラフィックの暗号化方法を指示する暗号化アルゴリズムです。

certbotを使用して証明書を取得した場合は、パス/etc/letsencrypt/options-ssl-nginx.confの暗号 HTTP/2に対して十分に安全ではありません。ただし、このファイルを変更するとエラーが発生するだけで、certbotが更新を適用できなくなります。これは、暗号のリストを指定し、ファイルを無視するようにNginxに指示する必要があることを意味します

Nginxのドメインサーバーブロックの構成ファイルを開きます

$ vim /etc/nginx/sites-available/crazytechgeek.info

この行にコメントする

# include /etc/letsencrypt/options-ssl-nginx.conf;

その行の下に、許可される暗号を定義するために以下の行を追加します

ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

ファイルを保存してテキストエディタを終了します

自己割り当ての証明書またはサードパーティの証明書が使用された場合は、ファイルを開きます

/etc/nginx/snippets/ssl-params.conf 
$ sudo vim /etc/nginx/snippets/ssl-params.conf

以下に示すように線を見つけます

...
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
...

以下に示すように、それに応じてファイルを変更します


...
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

最後に、構成ファイルを保存して終了します

もう一度Nginx構成エラーを確認します

$ sudo nginx -t

すべてがうまくいけば、前に示したように以下の出力が表示されるはずです

Nginxを再起動します

$ sudo systemctl reload nginx

次のステップでは、サーバーがHTTP/2ページをサーバーできるかどうかをテストします

ステップ3– HTTP/2が有効になっているかどうかのテスト

次に、NginxウェブサーバーでHTTPが実行され、有効になっているかどうかをテストしましょう。
ターミナルで、以下のコマンドを実行します

curl -I -L https://your_domain

私たちの場合、それは

curl -I -L https://crazytechgeek.info

出力

または、

を押してGoogleデベロッパーツールを開いてHTTP/2を確認することもできます。
Ctrl + Shift + I 

次に、Networkをクリックします タブ。

Protocol 列、ラベルh2を必ず見つけてください

ステップ4– HTTP StrictTransportSecurityの導入

最後に、サーバーがHTTPリクエストをHTTPSにリダイレクトできることは非常に明確ですが、HSTS HTTP StrictTransportSecurityを有効にしてそのようなリダイレクトを排除したいと考えています。ブラウザがHSTSヘッダーを偶然見つけた場合、ブラウザは一定期間サーバーへの接続を再試行しません。 ITは、安全で暗号化されたHTTPSプロトコルを介してのみデータを交換します。

これを実現するには、Nginx構成ファイルを開きます

$ vim /etc/nginx/nginx.conf

以下の行を追加してください

add_header Strict-Transport-Security "max-age=15768000" always;

max-age 秒単位で設定されます

サイトにサブドメインがあり、それらすべてにHSTSを適用する場合は、includeSubDomainsを追加します 行末のフラグ

add_header Strict-Transport-Security "max-age=15768000; includeSubDomains" always;

保存して構成ファイルを終了します。

いつものように、エラーがないか確認してください

$ sudo nginx -t


最後に、Nginxを再起動します

$ sudo systemctl restart nginx

結論

この時点で、NginxサーバーはHTTP/2ページを提供しています。
https://tools.keycdn.com/http2-test にアクセスすることもできます。 示されているようにサイトのHTTP/2ステータスをテストします

または、このサイトにアクセスすることもできます

https://http2.pro/

より詳細な結果については、

を使用してください
https://www.ssllabs.com/ssltest/


Linux
  1. Ubuntu16.04にNginxを使用してHTTPGitサーバーをインストールする方法

  2. Ubuntu16.04でHTTP/2を使用してApacheを設定する方法

  3. Debian9でHTTP/2サポートを使用してNginxを設定する方法

  1. Ubuntu20.04でNginxサーバーブロックを設定する方法

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

  3. Ubuntu20.04でリバースプロキシとしてNginxを設定する方法

  1. NginxでHTTP/2を有効にする方法

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

  3. Ubuntu20.04のNginxでHTTP/2を構成する方法