Nginx Essentials:インストールと構成のトラブルシューティング

前書き

Nginxは、あらゆるサイズのWebサイトおよびアプリケーションをホストするために使用される無料のオープンソースWebサーバーです。 このソフトウェアは、メモリリソースへの影響が少なく、スケーラビリティが高く、安全で予測可能なパフォーマンスを提供できるモジュール式のイベント駆動型アーキテクチャで知られています。 Nginxは、単なるWebサーバーではなく、ロードバランサー、HTTPキャッシュ、リバースプロキシとしても機能します。

複雑なソフトウェアツールと同様に、Nginxサーバーを管理したり、問題が発生した場合のトラブルシューティングを行うための特定のコマンドやベストプラクティスを覚えるのは難しい場合があります。 この虎の巻スタイルのガイドは、Nginxを使用するすべての人のためのクイックリファレンスとして機能することを目的としています。 基本的なサービス管理コマンドのほか、一般的な問題を診断して解決するためのヒントについても説明します。

このガイドの使用方法:

  • 各セクションは他のセクションとは独立して使用できるため、必要に応じてセクションをスキップしてください。

  • このガイドの各セクションのコマンドは自己完結型であり、コマンド例の赤い値を独自の値に置き換える必要があります。

  • 必要に応じて、このガイドのセクションには、詳細について参照できる他のリソースへのリンクが含まれています。

  • このガイドでは、DebianベースのディストリビューションのデフォルトリポジトリからインストールされたバージョンのNginxを使用していることを前提としています。 このガイドで説明されている規則の一部は、他のディストリビューションや、他のソースのNginxのバージョンには存在しないことに注意してください。

Nginxのインストール

`+ sudo apt-get`を使用して、パッケージインデックスを更新し、サービスをインストールします。

sudo apt-get update
sudo apt-get install nginx

インストールおよびセットアッププロセスの詳細については、https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04のチュートリアルに従ってください[UginにNginxをインストールする方法16.04]。

Nginxのステータスを確認する

Nginxがマシンで実行されているかどうかを確認するには、コマンドプロンプトに次を入力します。

sudo systemctl status nginx

Nginxを有効にする

デフォルトでは、Nginxはサーバーの起動時に自動的に起動するように設定されています。 必要に応じて、次のように入力してこの動作を無効にできます。

sudo systemctl disable nginx

ブート時に起動するサービスを再度有効にするには、次を入力します。

sudo systemctl enable nginx

Nginxの停止、開始、および再読み込み

すでに実行中のNginxサーバーを停止するには:

sudo systemctl stop nginx

サーバーが停止したら、次のように入力してサーバーを再起動できます。

sudo systemctl start nginx

Nginxを停止してから再び起動するには、次のように入力します。

sudo systemctl restart nginx

接続を中断することなくNginxをリロードすることもできます。

sudo systemctl reload nginx

`+ systemd `と ` systemctl +`コマンドの詳細については、https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journalをご覧ください。 [systemd essentialsの紹介]。

静的サイトのドキュメントルートの作成

Nginx Webサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、単一のサーバーで複数のドメインをホストします。 各サーバーブロックには、ドメインのコンテンツを提供する前にNginxが確認する必要がある特別なディレクトリである独自のドキュメントルートがあります。

以下のブロック内のコマンドは、新しいドキュメントルートを作成し、ドキュメントルートの所有権を非ルートユーザーに変更し、 `+ / var / www / +`内の各サブディレクトリの権限を変更します。

sudo mkdir -p /var/www//html
sudo chown -R $USER:$USER /var/www//html
find /var/www -type d -exec chmod  {} \;

この例では、ドキュメントのルートディレクトリにグローバルな読み取りおよび実行の権限があることを確認していますが、特定のニーズを反映するために、「++」を別の値に置き換える必要があります。

動的に処理されるサイトのドキュメントルートの作成

特定のプログラム(PHP-FPMなど)でNginxを使用して動的に処理されるサイトを作成する場合、特に必要な場合は、 `+ www-data +`グループアクセスまたは所有権を許可するために、いくつかのファイルの権限を調整する必要がある場合がありますディレクトリに書き込むことができます。

以下のブロックのコマンドは、新しいドキュメントルートを作成し、ドキュメントルートの所有権を「+ www-data 」グループに変更し、「 / var / www +」内の各サブディレクトリの権限を変更します。

sudo mkdir -p /var/www//html
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www -type d -exec chmod  {} \;

パーミッションの詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions [Linuxパーミッションの紹介]をご覧ください。 Ubuntu 16.04でNginxサーバーブロック(仮想ホスト)をセットアップする方法。ドキュメントルートを作成および変更するための詳細なアプローチを提供します。

設定ファイルを有効にする

`+ sites-available `ディレクトリから ` sites-enabled +`ディレクトリへのシンボリックリンクを作成することにより、サーバーブロックの設定ファイルを有効にできます。これは、Nginxが起動時に読み取ります。

これを行うには、次のコマンドを入力します。

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

ファイルをリンクした後、Nginxをリロードして変更を反映し、サーバーブロックの構成ファイルを有効にします。

sudo systemctl reload nginx

ハッシュバケットメモリの問題の解決

Nginxはハッシュテーブル(「バケット」に編成されている)を使用して、サーバー名やMIMEタイプなどの静的データをすばやく処理します。 したがって、複数のサーバー名を追加した場合、サーバー名のハッシュバケットのサイズが十分でなくなる可能性があり、変更を加えると「+ server_names_hash_bucket_size 」エラーが表示されます。 これは、 ` / etc / nginx / nginx.conf +`ファイル内の単一の値を調整することで対処できます。

この構成ファイルを開くには、次のように入力します。

sudo nano /etc/nginx/nginx.conf

ファイル内で、 `+ server_names_hash_bucket_size `ディレクティブを見つけます。 「#+」記号を削除して行のコメントを解除し、ディレクティブの値を次の2の累乗だけ増やします。

/etc/nginx/nginx.conf

http {
   . . .

   server_names_hash_bucket_size ;

   . . .
}

これを行うと、Nginxのサーバー名ハッシュテーブルのバケットサイズが大きくなり、追加したすべてのサーバー名をサービスで処理できるようになります。 終了したらファイルを保存して閉じ、Nginxを再起動して変更を反映します。

構成ファイルの確認

Nginx構成ファイルに変更を加えるときはいつでも、構文エラーが残っているかどうかを確認することが重要です。 これは、次のコマンドを発行することで実行できます。

sudo nginx -t

構成ファイルにエラーがある場合、コマンドの出力は、ファイル内のどこでエラーが見つかったかを正確に示します。 逆に、nginxの設定ファイルに構文エラーがない場合、次のような出力が表示されます。

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

エラーが検出されず、変更をすぐに適用する場合は、サービスを再起動します。

sudo systemctl restart nginx

重要なNginxファイルとディレクトリ

Nginxでの作業に時間を費やすと、次のファイルとディレクトリに頻繁にアクセスすることに気付く場合があります。

コンテンツ

  • + / var / www / html:これは、実際のWebコンテンツが提供されるデフォルトのドキュメントルートの場所です。 ドキュメントルートは、Nginx構成ファイルを変更することで変更できます。

サーバー構成

  • + / etc / nginx / +:すべてのNginx構成ファイルが見つかるデフォルトのNginx構成ディレクトリ。

  • + / etc / nginx / nginx.conf +:プライマリNginx設定ファイル。 これは、Nginxの構成をグローバルに変更するように指示できます。

  • + / etc / nginx / sites-available / default +:Nginxのデフォルトのサーバーブロックファイル。 他のサイトごとのサーバーブロックも `+ sites-available `ディレクトリに保存されますが、これらは ` sites-enabled +`ディレクトリにリンクされていない限り使用されません。

  • + / etc / nginx / sites-enabled / +:サイトごとに有効化された「サーバーブロック」が保存されているディレクトリ。 通常、これらは `+ sites-available +`ディレクトリにある設定ファイルにリンクすることにより作成されます。

サーバーログ

  • + / var / log / nginx / access.log +:Webサーバーへのすべてのリクエストは、Nginxが別の方法で設定されていない限り、このログファイルに記録されます。

  • + / var / log / nginx / error.log +:Nginxエラーはすべてこのログに記録されます。

  • Nginxプロセスのsystemdログにアクセスするには、次のコマンドを実行します。

sudo journalctl -u nginx

結論

このガイドでは、Nginxのステータスを開始、停止、確認する方法、ウェブサイトのドキュメントルートを見つける方法、Nginx構成ファイルの構文を確認する方法など、Nginxサーバーを管理するための基本的なコマンドとプラクティスについて説明します。 Nginxでの作業の詳細については、次のチュートリアルを読むことをお勧めします。