序章

Nginx は、世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最もトラフィックの多いサイトのいくつかをホストする責任があります。 これは、Webサーバーまたはリバースプロキシとして使用できる軽量の選択肢です。

このガイドでは、Ubuntu 22.04サーバーにNginxをインストールする方法、ファイアウォールを調整する方法、Nginxプロセスを管理する方法、単一のサーバーから複数のドメインをホストするためのサーバーブロックを設定する方法について説明します。

前提条件

このガイドを開始する前に、サーバーにsudo権限を持つ通常の非rootユーザーが設定されている必要があります。 Ubuntu 22.04 の初期サーバーセットアップガイドに従って、通常のユーザーアカウントを構成する方法を学ぶことができます。

また、このチュートリアルの最後の手順を完了する前に、オプションでドメイン名を登録しておくこともできます。 DigitalOceanを使用したドメイン名の設定の詳細については、DigitalOceanDNSの概要を参照してください。

利用可能なアカウントがある場合は、root以外のユーザーとしてログインして開始します。

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

NginxはUbuntuのデフォルトのリポジトリで利用できるため、これらのリポジトリからNginxをインストールすることができます。 apt 包装システム。

これは私たちとの最初のやりとりなので apt このセッションのパッケージングシステムでは、ローカルパッケージインデックスを更新して、最新のパッケージリストにアクセスできるようにします。 その後、インストールできます nginx:

  1. sudo apt update
  2. sudo apt install nginx

プレス Y インストールの確認を求められたら。 サービスを再開するように求められたら、を押します ENTER デフォルトを受け入れて続行します。 apt Nginxと必要な依存関係をサーバーにインストールします。

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

Nginxをテストする前に、サービスへのアクセスを許可するようにファイアウォールソフトウェアを構成する必要があります。 Nginxは自分自身をサービスとして登録します ufw インストール時に、Nginxアクセスを許可するのが簡単になります。

次のようなアプリケーション構成を一覧表示します ufw 次のように入力して操作する方法を知っています。

  1. sudo ufw app list

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

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

出力で示されているように、Nginxで使用できるプロファイルは3つあります。

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

構成したトラフィックを引き続き許可する最も制限の厳しいプロファイルを有効にすることをお勧めします。 現在、ポート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サーバーを確認する

インストールプロセスの最後に、Ubuntu22.04は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 Fri 2022-03-01 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

これにより確認されたように、サービスは正常に開始されました。 ただし、これをテストする最良の方法は、実際にNginxにページをリクエストすることです。

サーバーのIPアドレスに移動すると、デフォルトのNginxランディングページにアクセスして、ソフトウェアが正しく実行されていることを確認できます。 サーバーのIPアドレスがわからない場合は、 icanhazip.com ツールを使用して見つけることができます。このツールを使用すると、インターネット上の別の場所から受信したパブリックIPアドレスがわかります。

  1. curl -4 icanhazip.com

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

http://your_server_ip

デフォルトの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

これで基本的な管理コマンドを学習し、複数のドメインをホストするようにサイトを構成する準備ができているはずです。

Nginx Webサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストと同様)を使用して、構成の詳細をカプセル化し、単一のサーバーから複数のドメインをホストできます。 your_domain というドメインを設定しますが、これを独自のドメイン名に置き換える必要があります。

Ubuntu 22.04の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!  The your_domain server block is working!</h1>
    </body>
</html>

を押してファイルを保存して閉じます Ctrl+X 終了し、保存するように求められたら、 Y その後 Enter

Nginxがこのコンテンツを提供するには、正しいディレクティブを使用してサーバーブロックを作成する必要があります。 デフォルトの設定ファイルを直接変更する代わりに、で新しい設定ファイルを作成しましょう。 /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 私たちのドメイン名に。

次に、ファイルからファイルへのリンクを作成して、ファイルを有効にします。 sites-enabled Nginxが起動時に読み取るディレクトリ:

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

注: Nginxは、シンボリックリンクまたはシンボリックリンクと呼ばれる一般的な方法を使用して、どのサーバーブロックが有効になっているかを追跡します。 シンボリックリンクの作成は、ディスク上にショートカットを作成するのと似ているため、後でショートカットをディスクから削除できます。 sites-enabled サーバーブロックを保持しながらディレクトリ sites-available 有効にしたい場合。

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

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

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

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

を見つける server_names_hash_bucket_size ディレクティブを削除し、 # 行のコメントを解除する記号。 nanoを使用している場合は、を押すとファイル内の単語をすばやく検索できます CTRLw.

注:コードの行をコメントアウトする–通常は # 行の先頭–実際に削除せずに無効にするもう1つの方法です。 多くの構成ファイルには、アクティブなコードとドキュメントを切り替えることで有効または無効にできるように、コメントアウトされた複数のオプションが付属しています。

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

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

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

  1. sudo nginx -t

問題がない場合は、Nginxを再起動して変更を有効にします。

  1. sudo systemctl restart nginx

これで、Nginxがドメイン名を提供するはずです。 次の場所に移動して、これをテストできます。 http://your_domain、次のようなものが表示されます。

ステップ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サーバーがインストールされたので、提供するコンテンツのタイプと、より豊かなエクスペリエンスを作成するために使用するテクノロジーについて、多くのオプションがあります。

より完全なアプリケーションスタックを構築したい場合は、記事 Ubuntu 22.04 にLinux、Nginx、MySQL、PHP(LEMPスタック)をインストールする方法を確認してください。

Let’s Encrypt を使用して無料のSSL証明書でドメイン名のHTTPSを設定するには、 Ubuntu22.04でLet’sEncryptを使用してNginxを保護する方法に進む必要があります。