開発者ドキュメント

CentOS7でNginxサーバーブロックを設定する方法

序章

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

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

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

このガイドでは、CentOS7VPSでNginxサーバーブロックを設定する方法について説明します。 このプロセスでは、要求しているドメインに応じて、さまざまな訪問者にさまざまなコンテンツを提供する方法を学習します。

前提条件

このガイドを開始する前に、最初に完了する必要のあるいくつかの手順があります。

root以外のユーザーがいるCentOS7サーバーにアクセスする必要があります。 sudo 特権。 これをまだ構成していない場合は、CentOS7初期サーバーセットアップガイドを実行してこのアカウントを作成できます。

また、サーバーブロックを構成するには、Nginxをインストールする必要があります。 サーバー上にLEMPスタック全体(Linux、Nginx、MySQL、およびPHP)が必要な場合は、 CentOS7での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つのサーバーブロックが example.com と別の example2.com. これらはガイド全体で参照されますが、フォローしながら独自のドメインまたは値に置き換える必要があります。 DigitalOceanでドメイン名を設定する方法については、このリンクをたどってください。

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

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

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

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

これらの各ディレクトリ内に、 html 実際のファイルを保持するディレクトリ。 これにより、ホスティングにある程度の柔軟性がもたらされます。

これらのディレクトリは、 mkdir コマンド( -p 内部にネストされたフォルダーを持つフォルダーを作成できるようにするフラグ):

sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/example2.com/html

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

権限を付与する

これでファイルのディレクトリ構造ができましたが、ファイルは root ユーザー。 通常のユーザーがWebディレクトリ内のファイルを変更できるようにする場合は、次のコマンドで所有権を変更できます。 chown:

sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/example2.com/html

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

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

sudo chmod -R 755 /var/www

これで、Webサーバーにコンテンツを提供するために必要なアクセス許可が付与され、ユーザーは適切なフォルダー内にコンテンツを作成できるようになります。

ステップ2—サイトごとにデモページを作成する

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

これはデモンストレーションとテストのみを目的としているため、ページは非常にシンプルになります。 私たちはただ作るつもりです index.html その特定のドメインを識別する各サイトのページ。

から始めましょう example.com. 私たちは開くことができます index.html 次のように入力して、エディタでファイルを作成します。

nano /var/www/example.com/html/index.html

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

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

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

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

cp /var/www/example.com/html/index.html /var/www/example2.com/html/index.html

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

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

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

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

サーバーブロックファイルは、個別のサイトの構成を指定し、NginxWebサーバーがさまざまなドメイン要求にどのように応答するかを決定するものです。

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

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

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

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

sudo nano /etc/nginx/nginx.conf

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

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

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

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

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

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

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

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

sudo nano /etc/nginx/sites-available/example.com.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に通知します。 メインサーバー名を宣言します、 example.com、および追加のエイリアス www.example.com、そのため www. および非www. リクエストには同じコンテンツが提供されます。

server_name example.com www.example.com;

注:各Nginxステートメントはセミコロン(;)、後で問題が発生した場合は、各ステートメント行を確認してください。

次に、で指定されたドキュメントルートを変更します。 root 指令。 作成したサイトのドキュメントルートをポイントします。

root /var/www/example.com/html;

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

try_files $uri $uri/ =404;

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

server {
    listen  80;
    
    server_name example.com www.example.com;
    
    location / {
        root  /var/www/example.com/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/example.com.conf /etc/nginx/sites-available/example2.com.conf

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

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

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

server {
    listen  80;
    
    server_name example2.com www.example2.com;
    
    location / {
        root  /var/www/example2.com/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/example.com.conf /etc/nginx/sites-enabled/example.com.conf
sudo ln -s /etc/nginx/sites-available/example2.com.conf /etc/nginx/sites-enabled/example2.com.conf

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

sudo systemctl restart nginx

ステップ5—ローカルホストファイルを設定する(オプション)

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

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

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

sudo nano /etc/hosts

Windowsマシンを使用している場合は、hostsファイルを変更する手順ここを参照してください。

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

127.0.0.1   localhost
127.0.1.1   guest-desktop
server_ip_address example.com
server_ip_address example2.com

これにより、 example.comexample2.com 私たちのローカルコンピュータでそれらを私たちのサーバーに送信します server_ip_address.

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

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

http://example.com

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

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

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

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

結論

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

モバイルバージョンを終了