前書き

Nginxは、世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最もトラフィックの多いサイトのホストを担当しています。 ほとんどの場合、NginxはApacheよりも軽くてスケーラブルであり、Webサーバーまたはリバースプロキシとして使用できます。

Nginxは*サーバーブロック*を使用して、個々のサイトまたはドメインの構成を管理します。 サーバーブロックを使用すると、一致するシステムを使用して、1つのサーバーで複数のドメインまたはインターフェイスをホストできます。 これは、単一のVPSから複数のサイトをホストする場合に関係します。

構成されている各ドメインは、同じサーバーが他のサイトにも責任があることを示すことなく、そのサイトの情報を保持している特定のディレクトリに訪問者を誘導します。 サーバーがすべてのサイトが引き付けるトラフィックを処理できる限り、このスキームはソフトウェアの制限なしに拡張できます。

このガイドでは、CentOS 7 VPSでNginxサーバーブロックをセットアップする方法を説明します。 このプロセスでは、リクエストしているドメインに応じて、異なる訪問者に異なるコンテンツを提供する方法を学びます。

前提条件

このガイドを始める前に、最初に完了する必要があるいくつかのステップがあります。

`+ sudo +`権限を持つ非rootユーザーでCentOS 7サーバーにアクセスする必要があります。 これをまだ構成していない場合は、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7初期サーバーセットアップガイド]を実行して、これを作成できます。アカウント。

サーバーブロックを構成するには、Nginxをインストールする必要もあります。 サーバー上にLEMP(Linux、Nginx、MySQL、およびPHP)スタック全体が必要な場合は、https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginxのガイドに従ってください。 -mysql-php-lemp-stack-on-centos-7 [CentOS 7でLEMPスタックを設定]。 Nginxのみが必要な場合は、Nginxの `+ yum +`リポジトリからインストールできます。

最初に、Nginxリポジトリをサーバーのソフトウェアソースのリストに追加します。

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

これで、 `+ yum +`を使用してNginxをダウンロードおよびインストールできます。

sudo yum install nginx

これらの手順が完了したら、SSHを介して非rootユーザーアカウントとしてログインし、チュートリアルを続行します。

*注意:*このガイドの設定例では、1つのサーバーブロックを「」用に、別のサーバーブロックを「」用に作成します。 これらはガイド全体で参照されますが、従う際に独自のドメインまたは値を置き換える必要があります。 DigitalOceanでドメイン名を設定する方法については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [このリンク]をご覧ください。

実際に使用するドメインがない場合は、チュートリアルの終わり近くにダミー値を使用してサーバーブロック構成をテストする方法を示します。

ステップ1-ディレクトリ構造を作成する

まず、訪問者に提供するサイトデータを保持するディレクトリ構造を作成する必要があります。

ドキュメントルート(Nginxが提供するコンテンツを見つけるために調べる最上位ディレクトリ)は、 `+ / var / www +`ディレクトリ内の個々のディレクトリに設定されます。 ここで、作成する予定のサーバーブロックごとにディレクトリを作成します。

これらの各ディレクトリ内に、実際のファイルを保持する `+ html +`ディレクトリを作成します。 これにより、ホスティングの柔軟性が向上します。

`+ mkdir `コマンドを使用してこれらのディレクトリを作成できます(その中にネストされたフォルダーを持つフォルダーを作成できるようにする ` -p +`フラグを使用):

sudo mkdir -p /var/www//html
sudo mkdir -p /var/www//html

の部分は、VPSから提供するドメイン名を表していることに注意してください。

許可を与える

これでファイルのディレクトリ構造はできましたが、それらは `+ root `ユーザーが所有しています。 通常のユーザーがWebディレクトリ内のファイルを変更できるようにしたい場合は、 ` chown`で所有権を変更できます。

sudo chown -R $USER:$USER /var/www//html
sudo chown -R $USER:$USER /var/www//html

`+ $ USER `変数は、コマンドを送信するときに現在ログインしているユーザーの値を取ります。 これを行うことで、通常のユーザーはコンテンツを保存する ` public_html +`サブディレクトリを所有するようになりました。

また、ページを正しく提供できるように、一般的なWebディレクトリとその中のすべてのファイルとフォルダーへの読み取りアクセスが許可されるように、アクセス許可を少し変更する必要があります。

sudo chmod -R 755 /var/www

これで、Webサーバーにはコンテンツを提供するために必要な権限が与えられ、ユーザーは適切なフォルダー内にコンテンツを作成できるようになります。

ステップ2-各サイトのデモページを作成する

ディレクトリ構造が整ったので、配信するコンテンツを作成しましょう。

これはデモンストレーションとテスト用であるため、ページは非常にシンプルになります。 特定のドメインを識別するサイトごとに `+ index.html`ページを作成するだけです。

「+」から始めましょう。 次のように入力して、エディターで ` index.html`ファイルを開くことができます。

nano /var/www//html/index.html

このファイルで、ページが接続されているサイトを示す単純なHTMLドキュメントを作成します。 このガイドでは、最初のドメインのファイルは次のようになります。

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  server block is working!</h1>
 </body>
</html>

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

このファイルをコピーして、2番目のサイトの `+ index.html +`のテンプレートとして使用するには、次のように入力します。

cp /var/www//html/index.html /var/www//html/index.html

次に、そのファイルを開いて、関連する情報を変更します。

nano /var/www//html/index.html
<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  server block is working!</h1>
 </body>
</html>

このファイルも保存して閉じます。 これで、サーバーブロック構成のテストに必要なページができました。

ステップ3-新しいサーバーブロックファイルを作成する

サーバーブロックファイルは、個別のサイトの構成を指定し、Nginx Webサーバーがさまざまなドメインリクエストにどのように応答するかを指定します。

最初に、サーバーブロックが保存されるディレクトリと、サーバーブロックが訪問者に提供する準備ができていることをNginxに伝えるディレクトリを設定する必要があります。 `+ sites-available `ディレクトリにはすべてのサーバーブロックファイルが保持され、 ` sites-enabled +`ディレクトリには公開するサーバーブロックへのシンボリックリンクが保持されます。 次のように入力して、両方のディレクトリを作成できます。

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

*注:*このディレクトリレイアウトはDebianの貢献者によって導入されましたが、サーバーブロックの管理の柔軟性を高めるためにここに含めています(この方法でサーバーブロックを一時的に有効または無効にする方が簡単です)。

次に、 `+ sites-enabled`ディレクトリでサーバーブロックを探すようにNginxに指示する必要があります。 これを実現するために、Nginxのメインの構成ファイルを編集し、追加の構成ファイル用のオプションのディレクトリを宣言する行を追加します。

sudo nano /etc/nginx/nginx.conf

これらの行を `+ http {} +`ブロックの最後に追加します:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

1行目はNginxに `+ sites-enabled +`ディレクトリでサーバーブロックを探すように指示し、2行目はドメイン名の解析に割り当てられるメモリ量を増やします(複数のドメインを使用しているため)。

これらの変更が完了したら、ファイルを保存して閉じることができます。 これで、最初のサーバーブロックファイルを作成する準備ができました。

最初のサーバーブロックファイルを作成する

デフォルトでは、Nginxには「+ default.conf +」と呼ばれる1つのサーバーブロックが含まれており、独自の構成のテンプレートとして使用できます。 デフォルトのファイルをコピーして、最初のサーバーブロック構成ファイルを作成できます。

sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/.conf

次に、ルート特権を使用してテキストエディタで新しいファイルを開きます。

sudo nano /etc/nginx/sites-available/.conf

*注意:*概説した設定により、すべてのサーバーブロックファイルは_ +。conf + `で終わる必要があります。

コメント行を無視すると、ファイルは次のようになります。

server {
   listen  80;
   server_name localhost;

   location / {
       root  /usr/share/nginx/html;
       index  index.html index.htm;
   }

   error_page  500 502 503 504  /50x.html;
   location = /50x.html {
       root  /usr/share/nginx/html;
   }
}

最初に調整する必要があるのは `+ server_name `です。これは、このサーバーブロックを指すリクエストをNginxに伝えます。 メインサーバー名「+」と「+ www。」への追加エイリアスを宣言し、「 www。」と「 www。+」以外のリクエストの両方が処理されるようにします同じコンテンツ:

server_name  www.;

*注意:*各Nginxステートメントはセミコロン( +; +)で終わる必要があるため、後で問題が発生する場合は、各ステートメント行を確認してください。

次に、 `+ root +`ディレクティブで指定されたドキュメントルートを変更します。 作成したサイトのドキュメントルートを指定します。

root /var/www//html;

また、目的のファイル名またはディレクトリが見つからない場合に404​​エラーで終了する「+ try_files +」コマンドを追加します。

try_files $uri $uri/ =404;

終了すると、ファイルは次のようになります。

server {
   listen  80;

   server_name  www.;

   location / {
       root  /var/www//html;
       index  index.html index.htm;
       try_files $uri $uri/ =404;
   }

   error_page  500 502 503 504  /50x.html;
   location = /50x.html {
       root  /usr/share/nginx/html;
   }
}

基本的な構成に必要なのはそれだけです。ファイルを保存して閉じ、終了します。

2番目のサーバーブロックファイルを作成する

最初のサーバーブロックファイルが確立されたので、そのファイルをコピーし、必要に応じて調整することで2番目のファイルを作成できます。

`+ cp +`でコピーすることから始めます:

sudo cp /etc/nginx/sites-available/.conf /etc/nginx/sites-available/.conf

テキストエディタでルート権限で新しいファイルを開きます。

sudo nano /etc/nginx/sites-available/.conf

次に、2番目のドメインを参照するためにすべての情報を変更する必要があります。 終了すると、2番目のサーバーブロックファイルは次のようになります。

server {
   listen  80;

   server_name  www.;

   location / {
       root  /var/www//html;
       index  index.html index.htm;
       try_files $uri $uri/ =404;
   }

   error_page  500 502 503 504  /50x.html;
   location = /50x.html {
       root  /usr/share/nginx/html;
   }
}

これらの変更が完了したら、ファイルを保存して閉じることができます。

ステップ4-新しいサーバーブロックファイルを有効にする

サーバーブロックファイルを作成したので、Nginxがそれらを訪問者に提供できるようにそれらを有効にする必要があります。 これを行うために、 `+ sites-enabled +`ディレクトリに各サーバーブロックのシンボリックリンクを作成できます。

sudo ln -s /etc/nginx/sites-available/.conf /etc/nginx/sites-enabled/.conf
sudo ln -s /etc/nginx/sites-available/.conf /etc/nginx/sites-enabled/.conf

終了したら、Nginxを再起動してこれらの変更を有効にします。

sudo systemctl restart nginx

ステップ5-ローカルホストファイルのセットアップ(オプション)

この手順をテストするために実際のドメインの代わりにサンプルドメインを使用している場合、ローカルコンピューターの `+ hosts +`ファイルを一時的に変更することで、サーバーブロックの機能をテストできます。 これは、登録済みドメインを使用している場合にDNSシステムが行うように、設定したドメインへの要求をインターセプトし、VPSサーバーにポイントします。 ただし、これはローカルコンピューターからのみ機能し、テスト目的でのみ役立ちます。

*注意:*これらの手順では、VPSサーバーではなく、ローカルコンピューターで操作していることを確認してください。 そのコンピューターの管理者資格情報にアクセスする必要があります。

MacまたはLinuxコンピューターを使用している場合は、次のように入力して、管理権限でローカルの `+ hosts +`ファイルを編集します。

sudo nano /etc/hosts

Windowsマシンを使用している場合、hostsファイルを変更する手順については、http://support.microsoft.com/kb/923947 [こちら]をご覧ください。

追加する必要がある詳細は、VPSのパブリックIPアドレスと、そのVPSに到達するために使用するドメインです。

127.0.0.1   localhost
127.0.1.1   guest-desktop

これにより、ローカルコンピューター上の「」および「」に対するすべてのリクエストが送信され、「++」のサーバーに送信されます。

ステップ6-結果をテストする

サーバーブロックの構成が完了したので、Webブラウザーで構成したドメインに移動して、セットアップを簡単にテストできます。

http://

次のようなページが表示されます。

画像:https://assets.digitalocean.com/articles/server_blocks_centos7/server_block_success.png [成功! example.comサーバーブロックが機能しています!]

同様に、他のドメインにアクセスすると、そのドメイン用に作成したファイルが表示されます。

構成したすべてのサイトが正常に機能する場合、同じCentOSサーバー上で新しいNginxサーバーブロックを正常に構成しています。

自宅のコンピューターの「+ hosts」ファイルを調整した場合は、設定が機能することを確認したので、追加した行を削除することができます。 これにより、実際には必要のないエントリでホストファイルがいっぱいになるのを防ぎます。

結論

この時点で、個別のドメインを持つ複数のサイトを処理する単一のCentOS 7サーバーが必要です。 上記で説明した手順に従って、後でサーバーブロックを追加することで、このプロセスを拡張できます。 Nginxが処理できるドメイン名の数にソフトウェアの制限はありません。そのため、サーバーが処理できる数だけ自由に作成してください。