Nginx Server Blocksを使用すると、1台のマシンで複数のWebサイトを実行できます。サーバーブロックを使用すると、サイトドキュメントルート(Webサイトファイルを含むディレクトリ)を指定したり、サイトごとに個別のセキュリティポリシーを作成したり、サイトごとに異なるSSL証明書を使用したりできます。
この記事では、Ubuntu 18.04でNginxサーバーブロック(Apache仮想ホストと同様)を設定する方法について、手順を追って説明します。
前提条件#
チュートリアルを続行する前に、次の前提条件を満たしていることを確認してください。
- パブリックサーバーのIPを指すドメイン名があります。
example.com
を使用します 。 - 次の手順に従ってNginxをインストールしました。
- sudo権限を持つユーザーとしてログインしています。
Server Blocks
が表示されます Virtual host
と呼ばれます 。仮想ホストはApacheの用語です。 ディレクトリ構造を作成する#
ドキュメントルートは、ドメイン名のWebサイトファイルが保存され、要求に応じて提供されるディレクトリです。ドキュメントルートは任意の場所に設定できます。
次のディレクトリ構造を使用します:
/var/www/
├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
├── domain3.com
│ └── public_html
基本的に、サーバー上でホストするドメインごとに、/var/www
内に個別のディレクトリを作成します。 ディレクトリ。これらの各ディレクトリ内に、public_html
を作成します。 ドメインのウェブサイトファイルを保存するディレクトリ。
ドメインexample.com
のルートディレクトリを作成しましょう :
sudo mkdir -p /var/www/example.com/public_html
テストの目的で、index.html
を作成します ドメインのドキュメントルートディレクトリ内のファイル。
エディターを開き、デモファイルを作成します:
/var/www/example.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/example.com
サーバーブロックを作成する#
Ubuntuシステムのデフォルトでは、Nginxサーバーブロックの構成ファイルは/etc/nginx/sites-available
に保存されます /etc/nginx/sites-enabled/
へのシンボリックリンクを介して有効にされるディレクトリ ディレクトリ。
選択したエディターを開き、次のサーバーブロックファイルを作成します。
/etc/nginx/sites-available/example.comserver {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
}
構成ファイルには好きな名前を付けることができますが、通常はドメイン名を使用するのが最適です。
新しいサーバーブロックファイルを有効にするには、ファイルから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
を開きます。 選択したブラウザで、次のように表示されます: