Nginxでは、サーバーブロック 特定のドメイン情報を定義するために使用されます。複数のドメインまたはWebサイトをホストするのに役立ちます。各ブロックには、ドキュメントルート、SSL、ポートなどの特定のドメイン情報が含まれています。 NginxサーバーブロックはApache仮想ホストに似ています。
このチュートリアルでは、Nginxサーバーブロックを構成する方法を学びます。 Ubuntuの場合18.04/ 20.04 。
前提条件
Ubuntu 18.04/20.04インスタンスが必要です。インスタンスにはNginxがインストールされている必要があります。 sudoアクセス権を持つユーザーを要求します。
ステップ1.ディレクトリ構造を作成する
ドキュメントルートは、ドメイン名のWebサイトファイルが保存され、要求に応じて提供されるディレクトリです。ドキュメントルートは任意の場所に設定できますが、この記事では、次のディレクトリ構造を使用します。
/var/www/
├── domain1.com
│ └── images
│ └── index.html
│ └── style.css
├── domain2.net
│ └── images
│ └── index.html
│ └── style.css
基本的に、サーバー上でホストするドメインごとに、/var/www
内に個別のディレクトリを作成します。 ディレクトリ。
ドメインのルートディレクトリを作成しましょう:
$ sudo mkdir -p /var/www/domain1.com
テストの目的で、ドメインのドキュメントルートディレクトリ内にindex.html、style.cssファイル、およびimagesディレクトリを作成します。
$ cd /var/www/domain1.com/
/var/www/domain1.com$ sudo mkdir images index.html style.css
エディターを開き、デモファイルを作成します:
/var/www/domain1.com/index.html<!DOCTYPE html> <html lang="en" dir="ltr">
<head> <meta charset="utf-8">
<title>Welcome to domain1.com</title> <link rel="stylesheet" href="style.css"/>
</head>
<body> <h1 style="color:green;text-align:center;">Success! domain1.com home page!</h1>
</body>
</html>
ここでは、コマンドをsudo
として実行しています。 ユーザーと新しく作成されたファイルとディレクトリは、root
が所有します ユーザー。
権限の問題を回避するために、ドメインドキュメントのルートディレクトリの所有権をNginxユーザー(www-data)
に変更できます。 :
$ sudo chown -R www-data: /var/www/domain1.com
domain2.net
に対しても同じ手順を実行します
ステップ2.ドメインごとにNginxサーバーブロックファイルを作成する
提供したいコンテンツができたので、Nginxにこれを行う方法を指示するサーバーブロックを実際に作成する必要があります。
デフォルトでは、Nginxにはdfault
という1つのサーバーブロックが含まれています これは、独自の構成のテンプレートとして使用できます。まず、最初のドメインのサーバーブロックを設計し、次に2番目のドメインにコピーして、必要な変更を加えます。
1)最初のNginxサーバーブロックファイルを作成します
上記のように、デフォルトのファイルをコピーして、最初のサーバーブロック構成ファイルを作成します。
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domain1.com
次に、sudo権限を使用してテキストエディタで作成した新しいファイルを開きます。
$ sudo nano /etc/nginx/sites-available/domain1.com
ファイルを編集すると、次のようになります。
/etc/nginx/sites-available/domain1.comserver { listen 80; listen [::]:80; root /var/www/domain1.com; index index.html index.htm index.nginx-debian.html; server_name domain1.com www.domain1.com;
location /
{ try_files $uri $uri/ =404; } }
基本構成に必要なのはこれだけです。ファイルを保存して閉じ、Ctrl
を終了します + x
。
2)2番目のNginxサーバーブロックファイルを作成します
最初のNginxサーバーブロック構成ができたので、それを2番目のファイルの基礎として使用できます。それをコピーして新しいファイルを作成します:
$ sudo cp /etc/nginx/sites-available/domain1.com /etc/nginx/sites-available/domain2.net
sudo
で新しいファイルを開きます エディターでの特権:
$ sudo nano /etc/nginx/sites-available/domain2.net
2番目のドメインのドキュメントroot
を指すようにrootディレクティブを調整します server_name
を調整します 2番目のサイトのドメイン名と一致するようにします(エイリアスを含めるようにしてください)。
終了すると、ファイルは次のようになります。
/etc/nginx/sites-available/domain2.netserver { listen 80; listen [::]:80; root /var/www/domain2.net; index index.html index.htm index.nginx-debian.html; server_name domain2.net www.domain2.net;
location /
{ try_files $uri $uri/ =404; } }
ファイルを保存して閉じ、Ctrl
を終了します + x
。
ステップ3.Nginxサーバーブロックを有効にしてNginxを再起動します
サーバーブロックファイルができたので、それらを有効にする必要があります。これを行うには、これらのファイルからsites-enabled
へのシンボリックリンクを作成します。 Nginxが起動時に読み取るディレクトリ。
次のように入力して、これらのリンクを作成できます。
$ sudo ln -s /etc/nginx/sites-available/domain1.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/domain2.net /etc/nginx/sites-enabled/
これらのファイルは有効なディレクトリにあり、3つのサーバーブロックが有効になっています:
1. domain1.com:domain1.comおよびwww.domain1.comのリクエストに応答します
2. domain2.net:domain2.netおよびwww.domain2.netのリクエストに応答します
3.デフォルト:他の2つのブロックと一致しないポート80の要求に応答します。
サーバー名を追加することで発生する可能性のあるハッシュバケットメモリの問題を回避するために、先に進み、/ etc / nginx/nginx.confファイル内の単一の値を調整します。今すぐファイルを開きます:
$ sudo nano /etc/nginx/nginx.conf
ファイル内で、server_names_hash_bucket_size
を見つけます 指令。 #
を削除します 行のコメントを解除する記号:
http { . . . server_names_hash_bucket_size 64; . . . }
終了したら、ファイルを保存して閉じます。
次に、テストして、Nginxファイルのいずれにも構文エラーがないことを確認します。
$ sudo nginx -t
問題が見つからなかった場合は、Nginxを再起動して変更を有効にします:
$ sudo systemctl restart nginx
これで、Nginxは両方のドメイン名を提供するはずです。
ステップ4.Webサイトにアクセスして確認する
これですべてのセットアップが完了したので、サーバーブロックが正しく機能していることをテストする必要があります。これを行うには、Webブラウザでドメインにアクセスします。
http://domain1.com
次のようなページが表示されます。
2番目のドメイン名にアクセスすると、わずかに異なるサイトが表示されます。
http://domain2.net
結論
このチュートリアルでは、Ubuntu 18.04/20.04でNginxサーバーブロックを構成する方法を学びました。 Nginxサーバーブロックを使用して、Webリクエストを処理するために2つのドメインを設定しました。