序章

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

このガイドでは、Debian10サーバーにNginxをインストールします。

前提条件

このガイドを開始する前に、サーバーにsudo権限を持つ通常の非rootユーザーが設定されている必要があります。 また、アクティブなファイアウォールが必要です。 これを設定する方法については、Debian10初期サーバー設定ガイドに従ってください。

ステップ1-Nginxをインストールする

NginxはDebianのデフォルトのソフトウェアリポジトリで利用可能であり、従来のパッケージ管理ツールからインストールすることができます。

まず、ローカルパッケージインデックスを更新して、最新のアップストリームの変更を反映します。

  1. sudo apt update

次に、をインストールします nginx パッケージ:

  1. sudo apt install nginx

インストールを確認し、次のように入力します Y、次にを押します Enter 続行します。 apt 次に、Nginxと必要な依存関係をサーバーにインストールします。

ステップ2–ファイアウォールの調整

Nginxをテストする前に、ファイアウォール設定を変更して、デフォルトのWebポートへの外部アクセスを許可する必要があります。 前提条件の指示に従ったと仮定すると、サーバーへのアクセスを制限するようにUFWファイアウォールを構成する必要があります。

インストール中に、NginxはUFWに登録して、ファイアウォールを介したNginxへのアクセスを有効または無効にするために使用できるいくつかのアプリケーションプロファイルを提供します。

リストする ufw 次のように入力してアプリケーションプロファイルを作成します。

  1. sudo ufw app list

アプリケーションプロファイルのリストを取得する必要があります。

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

ご覧のとおり、Nginxで使用できるプロファイルは3つあります。

  • Nginx Full :このプロファイルは両方のポートを開きます 80 (通常の暗号化されていないWebトラフィック)とポート 443 (TLS / SSL暗号化トラフィック)
  • Nginx HTTP :このプロファイルはポートのみを開きます 80 (通常の暗号化されていないWebトラフィック)
  • Nginx HTTPS :このプロファイルはポートのみを開きます 443 (TLS / SSL暗号化トラフィック)

構成したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 このガイドではまだサーバーのTLS/SSLを構成していないため、ポートでHTTPのトラフィックのみを許可する必要があります。 80.

これを有効にするには、次のように入力します。

  1. sudo ufw allow 'Nginx HTTP'

次のように入力して、変更を確認できます。

  1. sudo ufw status

表示されるのは、出力で許可されているHTTPトラフィックです。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

ステップ3–Webサーバーを確認する

インストールプロセスの最後に、Debian10はNginxを起動します。 Webサーバーはすでに稼働しているはずです。

で確認できます systemd 次のように入力して、サービスが実行されていることを確認するinitsystem。

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

この出力は、サービスが正常に開始されたことを示しています。 ただし、これをテストする最良の方法は、実際にNginxにページをリクエストすることです。

サーバーのIPアドレスに移動すると、デフォルトのNginxランディングページにアクセスして、ソフトウェアが正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、サーバーのコマンドプロンプトで次のように入力できます。

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

数行戻ります。 Webブラウザーでそれぞれを試して、機能するかどうかを確認できます。

サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力します。

http://your_server_ip

デフォルトのNginxランディングページがWebブラウザに表示されます。

このページは、サーバーが正しく実行されていることを示すためにNginxに含まれています。

ステップ4–Nginxプロセスの管理

Webサーバーが稼働しているので、いくつかの基本的な管理コマンドを確認できます。

Webサーバーを停止するには、次のように入力します。

  1. sudo systemctl stop nginx

停止時にWebサーバーを起動するには、次のように入力します。

  1. sudo systemctl start nginx

サービスを停止してから再開するには、次のように入力します。

  1. sudo systemctl restart nginx

構成を変更する場合、Nginxは接続を切断せずにリロードできることがよくあります。 これを行うには、次のように入力します。

  1. sudo systemctl reload nginx

デフォルトでは、Nginxはサーバーの起動時に自動的に起動するように構成されています。 これが希望どおりでない場合は、次のように入力してこの動作を無効にできます。

  1. sudo systemctl disable nginx

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

  1. sudo systemctl enable nginx

ステップ5–サーバーブロックの設定(オプション)

Nginx Webサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、構成の詳細をカプセル化し、単一のサーバーで複数のドメインをホストできます。 次のコマンドで、 your_domain あなた自身のドメイン名で。 DigitalOceanを使用したドメイン名の設定の詳細については、 DigitalOceanDNSの概要を参照してください。

Debian 10のNginxでは、デフォルトで1つのサーバーブロックが有効になっており、次のディレクトリからドキュメントを提供するように構成されています。 /var/www/html. これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は管理できなくなる可能性があります。 変更する代わりに /var/www/html、内にディレクトリ構造を作成します /var/www のために your_domain ウェブサイト、去る /var/www/html クライアント要求が他のサイトと一致しない場合に提供されるデフォルトのディレクトリとして配置されます。

のディレクトリを作成します your_domain 次のように、 -p 必要な親ディレクトリを作成するためのフラグ:

  1. sudo mkdir -p /var/www/your_domain/html

次に、ディレクトリの所有権を $USER 現在のシステムユーザーを参照する必要がある環境変数:

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

変更していない場合は、Webルートの権限が正しいはずです。 umask 値ですが、次のように入力して確認できます。

  1. sudo chmod -R 755 /var/www/your_domain

次に、サンプルを作成します index.html 使用するページ nano またはお好みのテキストエディタ:

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

内部に、次のサンプルHTMLを追加します。

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

終了したら、ファイルを保存して閉じます。 の nano あなたはを押すことによってこれを行うことができます CTRL + X、 それから Y、 その後 ENTER.

Nginxがこのコンテンツを提供するには、カスタムWebルートを指す正しいディレクティブを使用してサーバーブロックを作成する必要があります。 デフォルトの構成ファイルを直接変更する代わりに、で新しい構成ファイルを作成します。 /etc/nginx/sites-available/your_domain:

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

次の構成ブロックを追加します。これはデフォルトに似ていますが、新しいディレクトリとドメイン名用に更新されています。

/ etc / nginx / sites-available / your_domain
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;
        }
}

更新されたことに注意してください root 新しいディレクトリへの設定と server_name あなたのドメイン名に。 交換することを忘れないでください your_domain 実際のドメイン名で。

次に、内部にカスタム構成ファイルへのシンボリックリンクを作成して、このサーバーブロックを有効にします。 sites-enabled Nginxが起動時に読み取るディレクトリ:

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

これで、サーバーで2つのサーバーブロックが有効になり、それらに基づいて要求に応答するように構成されました。 listenserver_name ディレクティブ(Nginxがこれらのディレクティブを処理する方法ここについて詳しく読むことができます):

  • your_domain:のリクエストに対応します your_domainwww.your_domain.
  • default:ポート上のすべての要求に応答します 80 他の2つのブロックと一致しません。

構成にサーバー名を追加することで発生する可能性のあるハッシュバケットメモリの問題を回避するには、 /etc/nginx/nginx.conf ファイル。 ファイルを開きます。

  1. sudo nano /etc/nginx/nginx.conf

を見つける server_names_hash_bucket_size ディレクティブを削除し、 # 行のコメントを解除する記号:

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

終了したら、ファイルを保存して閉じます。

次に、テストして、Nginxファイルのいずれにも構文エラーがないことを確認します。

  1. sudo nginx -t

問題がない場合の出力は次のとおりです。

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

構成テストに合格したら、Nginxを再起動して変更を有効にします。

  1. sudo systemctl restart nginx

これで、Nginxがドメイン名を提供するはずです。 次の場所に移動して、これをテストできます。 http://your_domain. で作成したカスタムHTML /var/www/your_domain/html/index.html フォルダはここにレンダリングする必要があります:

ステップ6–重要なNginxファイルとディレクトリに精通する

Nginxサービス自体を管理する方法がわかったので、時間をかけていくつかの重要なディレクトリとファイルに慣れることができます。

コンテンツ

  • /var/www/html:実際のWebコンテンツは、デフォルトでは前に見たデフォルトのNginxページのみで構成されており、 /var/www/html ディレクトリ。 これは、Nginx構成ファイルを変更することで変更できます。

サーバー構成

  • /etc/nginx:Nginx構成ディレクトリ。 すべてのNginx構成ファイルはここにあります。
  • /etc/nginx/nginx.conf:メインのNginx構成ファイル。 これを変更して、Nginxグローバル構成を変更できます。
  • /etc/nginx/sites-available/:サイトごとのサーバーブロックを保存できるディレクトリ。 Nginxは、これらがリンクされていない限り、このディレクトリにある構成ファイルを使用しません sites-enabled ディレクトリ。 通常、すべてのサーバーブロック構成はこのディレクトリで行われ、他のディレクトリにリンクすることで有効になります。
  • /etc/nginx/sites-enabled/:有効なサイトごとのサーバーブロックが保存されているディレクトリ。 通常、これらは、にある構成ファイルにリンクすることによって作成されます。 sites-available ディレクトリ。
  • /etc/nginx/snippets:このディレクトリには、Nginx構成の他の場所に含めることができる構成フラグメントが含まれています。 繰り返し可能な構成セグメントは、スニペットにリファクタリングするための適切な候補です。

サーバーログ

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

結論

Webサーバーがインストールされたので、提供できるコンテンツの種類と、ユーザーにより豊かなエクスペリエンスを作成するために使用できるテクノロジーについて、多くのオプションがあります。