サーバーブロックは、特定のドメインの設定を定義するNginxディレクティブであり、単一のサーバーで複数のWebサイトを実行できるようにします。 Webサイトごとに、サイトドキュメントルート(Webサイトファイルを含むディレクトリ)を設定したり、個別のセキュリティポリシーを作成したり、さまざまなSSL証明書を使用したりすることができます。
この記事では、Ubuntu20.04でNginxサーバーブロックを設定する方法について説明します。
前提条件#
続行する前に、次の要件を満たしていることを確認してください。
- パブリックサーバーのIPを指すドメイン名。
- UbuntuシステムにインストールされているNginx。
- rootまたはsudo権限を持つユーザーとしてログインしています。
一部の記事では、「サーバーブロック」という用語は「仮想ホスト」と呼ばれています。仮想ホストはApacheの用語です。
ドキュメントルートは、ドメイン名のWebサイトファイルが保存され、要求に応じて提供されるディレクトリです。ドキュメントルートは任意の場所に設定できます。この例では、次のディレクトリ構造を使用します。
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
サーバーでホストされている各ドメインのドキュメントルートは、/var/www/<domain_name>/public_html
に設定されます。 。
ドメインのルートディレクトリを作成することから始めます:
sudo mkdir -p /var/www/domain1.com/public_html
index.html
も作成します ブラウザでドメインにアクセスしたときに表示されるドメインドキュメントのルートディレクトリ内のファイル:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
上記のコマンドはsudoユーザーとして実行されるため、新しく作成されたファイルとディレクトリはrootが所有します。アクセス許可の問題を回避するには、ドメインドキュメントのルートディレクトリとディレクトリ内のすべてのファイルの所有権をNginxユーザー(www-data
)に変更します。 ):
sudo chown -R www-data: /var/www/domain1.com
サーバーブロックの作成#
Ubuntuシステムでは、Nginxサーバーブロック構成ファイルは/etc/nginx/sites-available
にあります。 ディレクトリ。 /etc/nginx/sites-enabled
へのシンボリックリンクを作成することで有効にできます 起動時にNginxが読み取ったディレクトリ。
テキストエディタを開き、次のサーバーブロックファイルを作成します。
/etc/nginx/sites-available/example.comserver {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/public_html;
index index.html;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
-
server_name
:このサーバーブロック構成に一致する必要があるドメイン。 root
:Nginxがドメインファイルを提供するディレクトリ。-
access_log
、error_log
:ログファイルの場所を指定します。
構成ファイルには任意の名前を付けることができますが、通常はドメイン名を使用するのが最適です。
新しいサーバーブロックファイルを有効にするには、ファイルからsites-enabled
へのシンボリックリンクを作成します Nginxが起動時に読み取ったディレクトリ:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
正しい構文について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
変更を有効にするには、Nginxサービスを再起動します。
sudo systemctl restart nginx
最後に、サーバーブロックが期待どおりに機能していることを確認するには、http://example.com
を開きます。 選択したブラウザで、次のように表示されます: