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

Let's Encrypt TLS/SSLを使用してNginxをDebian11Bullseyeにインストールする方法

NGINX はオープンソースの無料のHTTPサーバーソフトウェアです。 NGINXは、HTTPサーバー機能に加えて、電子メール(IMAP、POP3、およびSMTP)のプロキシサーバー、およびHTTP、TCP、およびUDPサーバーのリバースプロキシおよびロードバランサーとしても機能します。 NGINXの背後にある目標は、最速のWebサーバーを作成することであり、その卓越性を維持することは、依然としてNginxプロジェクトの中心的な目標です。 NGINXは、Webサーバーのパフォーマンスを測定するベンチマークでApacheやその他のサーバーを常に上回っており、W3Techによると現在最も人気のある使用済みWebサーバーです。

次のチュートリアルでは、デフォルトのDebianリポジトリまたはLet’sEncryptからの無料のTLS/SSL証明書を使用したOndřejSurýによる代替リポジトリを使用してDebian11BullseyeにNginxをインストールする方法を学習します。

前提条件
  • 推奨OS: Debian11ブルズアイ
  • ユーザーアカウント: sudo特権を持つユーザーアカウント またはrootアクセス(suコマンド)

オペレーティングシステムの更新

Debian 11 Bullseyeを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:

sudo apt update && sudo apt upgrade

ルートまたはSudoアクセス

デフォルトでは、他のディストリビューションと比較して、Debianを使用して起動時にアカウントを作成すると、sudoersステータスを自動的に受け取りません。 ルートパスワードにアクセスできる必要があります suコマンドを使用するには または、DebianのSudoersにユーザーを追加する方法に関するチュートリアルをご覧ください。

Nginxをインストール

方法1.DebianリポジトリからNginxStableをインストールします

最初の方法は、DebianのデフォルトリポジトリからNginxをインストールすることであり、これらのバージョンは安定していて安全であることが証明されています。プライマリWebサーバーまたはリバースプロキシを実行する必要がある場合は、Debianリポジトリパッケージをインストールすることをお勧めします。

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

sudo apt install nginx

出力例:

「Y」と入力します 次に、「ENTERキー」を押します。 インストールを続行します。

次に、バージョンビルドを確認し、インストールが成功したかどうかを確認します。

sudo nginx -v

出力例:

nginx version: nginx/1.18.0

方法2.OndřejSurýリポジトリから最新のNginxStableまたはMainlineをインストールします

または、Debian 11リポジトリからデフォルトのNginx安定ビルドをインストールする代わりに、DebianのPHPメンテナであるOndřejSurýのリポジトリを使用してNginxStableまたはMainlineをインストールできます。

メインラインリポジトリをインポートするには:

curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x

安定したリポジトリをインポートするには:

curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x

新しい変更を反映するようにリポジトリを更新します:

sudo apt update

これで、Nginxリポジトリがインストールされました リポジトリリストを更新し、次のようにNginxをインストールします。

sudo apt install nginx-core nginx-common nginx nginx-full

出力例:

」と入力します Y」をクリックし、「ENTERKEY」を押します。 続行してインストールを完了します。

次に、 apt-cachepolicyコマンドを使用して、OndřejSurýリポジトリの最新のNginxがインストールされていることを確認します。 。 チュートリアルの例に注意してください インストールされたNginxメインライン:

apt-cache policy nginx

Nginx Mainlineの出力例 :

既存の/ etc / nginx /を保持または置き換えるように求められる場合があることに注意してください nginx.conf インストール中の構成ファイル。 (n)を押して、現在の構成ファイルを保持することをお勧めします 。メンテナのバージョンに関係なくコピーが作成され、将来的に確認することもできます。

このバージョンでは、追加のモジュール、特にbrotliサポートが利用可能になることに気付くでしょう。 brotliをインストールするには 、以下の手順に従ってください。

nginx.confを開きます 構成ファイル:

nano /etc/nginx/nginx.conf

次に、 HTTP {}の前に行を追加します セクション:

brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
   application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
   application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
   font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
   image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;

brotli_comp_level 1(最低)の間に設定できます および11(最高) 。通常、ほとんどのサーバーは中央に配置されますが、サーバーがモンスターの場合は、11に設定して、CPU使用率レベルを監視します。

次に、変更を有効にする前に、変更が正しく機能していることをテストします。

sudo nginx -t

変更が正しく機能している場合は、次のように表示されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

サーバーを再起動して、変更を有効にします。

sudo systemctl restart nginx
systemctl status nginx

出力例:

オプション。 UFW構成

デフォルトでは、Ubuntuなどの他のディストリビューションとは異なり、UFWはDebian11Bullseyeにインストールされていません。ただし、UFWを使用している場合、またはファイアウォールの実行をより明確に把握したい場合は、以下の情報を使用してNginx用にUFWを構成してください。

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

sudo apt install ufw -y

次に、次のコマンドでUFWを有効にします。

sudo ufw enable

デフォルトでは、すべての着信接続がブロックされ、すべての発信が許可されます。

次に、次のように入力して、インストールしたアプリケーションを確認します。

sudo ufw app list

出力例(他のアプリケーションの大きなリストも表示されることに注意してください):

 Available applications:
   Nginx Full
   Nginx HTTP
   Nginx HTTPS

次に、すべてのオプションを含め、HTTP(ポート80)、HTTPS(ポート443)、またはフルでNginxを有効にできます。

HTTP(ポート80):

sudo ufw allow 'Nginx HTTP'

HTTP(ポート443):

sudo ufw allow 'Nginx HTTPS'

HTTPSとHTTPS(フル):

sudo ufw allow 'Nginx FULL'

チュートリアルでは、「Nginx(フル)」 有効になりました。

出力例:

 Rules updated
 Rules updated (v6)

次のコマンドを使用して、ファイアウォールルールがアクティブであることを確認します。

sudo ufw status

出力にリストされたルールが表示されます。

 Status: active
 To                         Action      From
 --                         ------      ----
 Nginx Full                 ALLOW       Anywhere                  
 Nginx Full (v6)          ALLOW       Anywhere (v6) 

UFWを設定したら、インターネットブラウザにNginxランディングページが表示されることを確認してください。

http://your_server_ip

すべてがうまく機能している場合は、次のページにアクセスする必要があります:

Nginxサーバーの構成

サーバーのIPアドレスを設定する準備ができている必要があります。これを行う最も簡単な方法は、次の方法です。

サーバーのIPアドレスを見つける

サーバーのIPアドレスを設定する準備ができている必要があります。これを行う最も簡単な方法は、次の方法です。

curl -4 icanhazip.com

出力例:

XXX.XXX.XXX.XXX IP address

サイトソースディレクトリの設定

Nginxサーバーブロック (Apacheの仮想ホストと同様に)構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。チュートリアルでは、 example.comというドメインを設定します 、ただし、これをドメイン名に置き換える必要があります 。

Nginxをインストールすると、プリインストールされたwwwディレクトリで作成されます。場所は/ var / www / html /にあります

まず、 example.comのディレクトリを作成します 、次のように、「-p」フラグを使用して必要な親ディレクトリを作成します。

sudo mkdir -p /var/www/example.com/html

次に、ディレクトリの所有者を割り当てる必要があります。

sudo chown -R $USER:$USER /var/www/your_domain/html

3番目に、ディレクトリのアクセス許可を割り当てます。これにより、所有者はファイルの読み取り、書き込み、および実行を行い、グループなどには読み取りと実行のアクセス許可のみを付与します。次のコマンドを入力できます:

sudo chmod -R 755 /var/www/your_domain

テストHTMLページを設定する

第4に、Nginxサーバーが動作していることを確認するために使用するテストページを作成します。

nano /var/www/your_domain/html/index.html

nanoエディターと作成した新しいファイルの内部。次のように入力します。

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

ファイルを保存しますCTRL+ O、 次に、 CTRL + Xを終了します 。

Nginxサーバーブロックの作成

次に、Webサイトのサーバーブロックを作成します。次のように新しいサーバーブロックを作成します。

sudo nano /etc/nginx/sites-available/your_domain.conf

次のサンプルコードをブロックに貼り付けることができます。これは単なるHTTPのみの例です 基本的なテスト用。

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm index.nginx-debian.html;
  server_name your_domain www.your_domain;

 location / {
  try_files $uri $uri/ =404;
 }
}

この例は、サーバーが2つのサーバー名「your_domain」をリッスンしていることを示しています。 ポート80で。

ルートディレクトリを、作成したルートディレクトリの名前/場所に変更する必要があります。

有効なNginxサーバーブロック

Nginxサーバーブロックを有効にするには、Nginxディレクトリで使用可能なサイトから有効になっているサイトに構成ファイルをリンクする必要があります。これは、次のようにln-sコマンドを使用して実行できます。

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

最終構成とテスト実行

最終段階では、デフォルトの nginx.confを開く必要があります ファイル。

sudo nano /etc/nginx/nginx.conf

そして、次の行のコメントを外します。

server_names_hash_bucket_size 64;

サーバーを追加すると問題が発生することがあるため、サーバー名のハッシュバケットサイズが変更されます。

次に、Nginxをテストして、正しく再起動する前に機能していることを確認します。

sudo nginx -t

構文にエラーがない場合、出力は次のようになります。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

次のok出力がある場合は、変更を行うためにNginxサーバーを再起動します。

sudo systemctl restart nginx

次に、インターネットブラウザを開き、サーバーのドメイン名を入力します。サーバーブロックが稼働していることを確認する必要があります。

Let'sEncryptのSSL無料証明書でNginxを保護する

理想的には、SSL証明書を使用したHTTPSでNginxを実行することをお勧めします。 。これを行う最良の方法は、 Let’s Encryptを使用することです。 非営利のインターネットセキュリティ研究グループ(ISRG)が運営する無料の自動化されたオープンな認証局 。

まず、certbotパッケージをインストールします 次のように:

sudo apt install python3-certbot-nginx -y

インストールしたら、次のコマンドを実行して証明書の作成を開始します。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

これは、強制HTTPS 301リダイレクト、Strict-Transport-Securityヘッダー、およびOCSPステープリングを含む理想的なセットアップです。電子メールとドメイン名を要件に合わせて調整してください。

これで、URLは HTTPS://www.example.comになります HTTP://www.example.comの代わりに 。

古いHTTPURLを使用する場合は注意してください 、自動的に HTTPSにリダイレクトされます 。

Nginxサーバーログにアクセスする方法

Nginxログディレクトリ

デフォルトでは、すべてのNGINXアクセス/エラーログは、変更していない限り、次のコマンドで表示できるログディレクトリにあります。

まず、ログディレクトリに移動してファイルを一覧表示します。

cd /var/log/nginx && ls -l

次のアクセスファイルとエラーファイルがあります。

アクセスログ:

/var/log/nginx/access.log

エラーログ:

/var/log/nginx/error.log

sudo tail -f / location / of / log pathコマンドを使用して、ターミナルでログをリアルタイムで表示するには。

例:

sudo tail -f /var/log/nginx/access.log

もう1つのオプションは、最後のX行を印刷することです。たとえば、Xを30に置き換えて、-n30フラグを追加して30行を印刷します。 。

sudo tail -f /var/log/nginx/access.log -n 30

これらは、ログの読み取りのほんの一例です。

Nginxログローテーションを構成する方法

Nginxはログローテーションを自動的にインストールし、毎日ローテーションするデフォルトに設定します。以下に示すようにファイルにアクセスすることで、これらの設定を変更できます。

sudo nano /etc/nginx/logrotate.d/nginx

次に、類似していない場合でも同じファイル構造が表示されます。ここで内容を変更できます。ほとんどの場合、保持するログの数を変更したり、毎日から毎週に変更したりできます。 fail2banモニタリングなどのソフトウェアに特定のログ要件が必要な場合を除いて、これはデフォルトのままにしておく必要があります。

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

おそらく変更したい主な設定は次のとおりです。

  • 毎日– これは、毎週、毎月に変更できます。これは毎日保管する必要があります。そうしないと、ログファイルを確認するのが困難になります。
  • 回転14– これは、保持および削除するログの数です。したがって、最大で14個のログしかありません。7日分のログのみを保持する場合は、これを7に変更します。

何をしているのかわからない限り、他の設定には触れないことをお勧めします。

Nginxを更新する方法

Nginxは、新しいバージョンがリポジトリにヒットしたときにデフォルトで更新されます。アップグレードする前に、Nginxディレクトリ、または少なくとも nginx.confをバックアップすることを常にお勧めします。 ファイル。次のコマンドでどちらも実行できます。

nginx.confをバックアップする(強くお勧めします):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

必要に応じて、Nginxフォルダー全体をバックアップします。

sudo cp /etc/nginx/ /etc/nginx-bkup

次に、標準の更新コマンドを実行します。

sudo apt update

アップグレードが利用可能な場合は、アップグレードを実行します。

sudo apt upgrade 

アップグレードまたはインストール中にこれを求めるプロンプトが表示される場合がありますが、事前に手動でこれを行うことは非常に重要です。複数のサイトの大規模なNginx構成の場合、GithubやGitlabなどにバックアップすることはさらに有益です。


Debian
  1. Lets Encrypt and Secure Nginx with SSL/TLSをDebian9にインストールする

  2. Drupal 9をNginxでインストールし、Debian10でSSLを暗号化する方法

  3. Debian 11 に Let’s Encrypt SSL を Apache でインストールする方法

  1. LetsEncryptSSLを使用してDokuWikiをDebian11にインストールする方法

  2. Debian11にNginxとSSLを使用してAbanteCartをインストールする方法

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

  1. Nginxを使用してWekanかんばんをインストールし、Debian10でSSLを暗号化する方法

  2. Nginxを使用してDrupalをインストールし、Debian11にSSLを暗号化する方法

  3. Nginxを使用してJoomlaをインストールし、Debian11にSSLを暗号化する方法