GNU/Linux >> Linux の 問題 >  >> Linux

Nginx仮想ホスト(サーバーブロック)を作成する方法

サーバーブロックは、Nginxでは仮想ホストと呼ばれることが多く、1つのサーバーで複数のウェブサイトをホストできます。使用方法は次のとおりです。

目次

  • 仮想ホストとは何ですか?
  • 仮想ホストはどのように機能しますか?
  • Nginx仮想ホスト(サーバーブロック)を作成する方法
    • 1。ディレクトリ構造の作成
    • 2。各Webサイトのテストページの作成
    • 3。 Nginx仮想ホスト(サーバーブロック)を作成する
    • 4。 Nginx仮想ホスト(サーバーブロック)を有効にする
    • 5。仮想ホストのテスト(オプション)
    • 6。 Nginx仮想ホスト(サーバーブロック)を無効にする
  • 結論

Nginxは、単一のサーバーとIPアドレスで複数のドメインを処理するように設計されています。つまり、Webサーバーとして使用される単一のサーバーがあり、1つのIPアドレスのみが割り当てられている場合、サーバーで複数のWebサイトまたはドメインを実行するには、Nginx仮想ホストを使用します。

このチュートリアルを開始する前に、Nginxをインストールする必要があります。インストール方法については、LinuxへのNginxWebサーバーのインストールに関する優れたガイドをお読みください。

仮想ホストとは何ですか?

仮想ホストが何かわからない場合は、説明させてください。これはApacheHTTPサーバーの用語です。ただし、Nginxユーザーによっても一般的に使用されます。 Nginxの適切な用語は、サーバーブロックです。 。

仮想ホストは、単一のサーバーで複数のドメイン名をホストするための方法です。

仮想ホストはどのように機能しますか?

サーバー上でNginxなどのWebサーバーソフトウェアを起動すると、そのWebサーバーは1つ以上のネットワークポートにバインドされます。通常、Webサーバーの場合、ポート80と443になります。

コンピューターがWebサイトにアクセスすると、インターネットを介してサーバーに要求が送信され、サーバーはその要求を受信します。したがって、サーバーが最初に行うことは、要求が宛先ポートに送信されたポートを確認することです。

次に、その宛先ポートを使用して、その情報を転送するアプリケーションを決定します。つまり、ウェブサーバーはリクエストを受信するアプリケーションを1つだけ持つことができます。

しかし、同じWebサーバーで2つの異なるWebサイトをホストする場合はどうでしょうか。サーバーは、Webサイトを要求するパケットがいつ到着するかを通知する必要があります。次に、どのWebサイトが要求されているかを知り、どの情報を送り返すかを知る必要があります。

どのWebサイトが要求されても、サーバーはポート番号だけを使用して宛先ポートを使用し、クライアントがアクセスしようとしているWebサイトを判別することはできません。サーバーが行うのは、「このリクエストをNginxに送信する」ということだけです。そこから、Nginxは何を返送するかを決定する必要があります。

Nginxにはサーバーブロックと呼ばれる概念があります 。サーバーブロックは、2つの異なる目的に使用できます。

要求されたIPアドレスに基づいて他のウェブサイトにサービスを提供するために使用することも、使用するドメイン名に基づいてさまざまなウェブサイトにサービスを提供するために使用することもできます

したがって、www.example.comのようなWebサイトの名前を入力し、サーバーがそれを受信すると、NginxはHTTPヘッダーの内部を調べて、要求されたサーバー名を確認し、そこから、構成された仮想ホストに基づいて作成します。どのディレクトリにWebサイトファイルを保存するか、サーバー名に基づいてクライアントに正しい応答を返すかを決定します。

Nginx仮想ホスト(サーバーブロック)を作成する方法

仮想ホスト構成ファイルを作成および保存できるディレクトリは2つあります。どちらも/etc/nginx内にあります ディレクトリ。これら2つのディレクトリの名前はsites-availableです。 およびsites-enabled

  • /etc/nginx/sites-available :個々の仮想ホスト(Webサイト)が定義されているディレクトリ。 Nginxは、リンクされていない限りこのディレクトリにある構成ファイルを使用しないことに注意してください。 /etc/nginx/sites-enabledに移動します ディレクトリ。
  • /etc/nginx/sites-enabled :Nginxによってアクティブに提供されている仮想ホスト(Webサイト)のリスト。

仮想ホストファイルを保存するためになぜ2つのディレクトリが必要なのか疑問に思われるでしょうか。これの主な利点は、Nginxサーバー上に多くの仮想ホストファイルを作成できることですが、要件に従ってそれらを有効にすることができます。

Nginxサーバーで複数のドメインを持つ複数のサイトをホストする仮想ホストファイルを作成します。ドメイン名はwebsite1.com およびwebsite2.com

1。ディレクトリ構造の作成

最初に行う必要があるのは、仮想ホストごとに異なるWebサイトコンテンツを格納するためのディレクトリを作成することです。ディレクトリを/var/wwwに配置します 、各ドメイン名にちなんで名前を付けます。

次のコマンドを実行して、ディレクトリを作成します。

sudo mkdir -p /var/www/website1.com
sudo mkdir -p /var/www/website2.com

-p 上記のコマンドのフラグは、mkdirに通知します 必要な親ディレクトリを作成します。

2。各Webサイトのテストページの作成

次に、デモンストレーションのために、index.htmlを作成しましょう。 ドメインのドキュメントルートディレクトリ内にファイルを保存して、何かを表示できるようにします。

sudo vim /var/www/website1.com/index.html

次の行を貼り付けます:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 1!</title>
    </head>
    <body>
        <h1>Welcome to Website 1!</h1>
    </body>
</html>

次に、website2.comに対して上記の手順を繰り返します。

sudo vim /var/www/website2.com/index.html

次の行を貼り付けます:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Welcome to Website 2!</title>
    </head>
    <body>
        <h1>Welcome to Website 2!</h1>
    </body>
</html>

3。 Nginx仮想ホスト(サーバーブロック)を作成する

sites-available内にNginx仮想ホストファイルを作成するには ディレクトリで、次のコマンドを実行します:

sudo vim /etc/nginx/sites-available/website1.com

Nginx仮想ホスト構成ファイルには任意の名前を付けることができますが、通常はドメイン名を使用することをお勧めします。

次に、次のコンテンツを仮想ホストファイルに貼り付けます。

server {
    listen 80;
    server_name website1.com www.website1.com;
    root /var/www/website1.com;

    access_log /var/log/nginx/website1-access.log;
    error_log /var/log/nginx/website1-error.log;
}

物事をより透明にするために、この構文を分解してみましょう。まず、各パラメータの意味は次のとおりです。

  • listen :接続をリッスンするNginxサーバーを指定します。
  • server_name :ここでは、ドメインのリクエストを照合します。ディレクティブには、サイトへのアクセスに使用するドメイン名のリストが含まれています。
  • root :ウェブサイトファイルを保存したディレクトリの場所。
  • error_log :この仮想ホストのすべてのエラーログを保存するログファイルへのフルパス。
  • access_log :この仮想ホストのすべてのアクセスログを保存するログファイルへのフルパス。

これで、最初の仮想ホスト構成を2番目のファイルの基礎として使用できます。コピーして新しいファイルを作成するだけです:

sudo cp /etc/nginx/sites-available/website1.com /etc/nginx/sites-available/website2.com

新しいファイルを開き、2番目のファイル(website2.com)に一致するように調整します )ドメイン名:

sudo vim /etc/nginx/sites-available/website2.com
server {
    listen 80;
    server_name website2.com www.website2.com;
    root /var/www/website2.com;

    access_log /var/log/nginx/website2-access.log;
    error_log /var/log/nginx/website2-error.log;
}

4。 Nginx仮想ホスト(サーバーブロック)を有効にする

テストの前に最後に行う必要があるのは、仮想ホストを有効にすることです。これを行うには、ファイルからsites-enabledへのシンボリックリンクを作成します ディレクトリ:

sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

下の画像からわかるように、これらのファイルはsites-enabledにリンクされています。 ディレクトリ。

先に進む前に、タイプミスがないことを再確認しましょう。正しい構文についてNginx構成をテストします:

sudo nginx -t

最後に、問題が見つからなかった場合は、Nginxサービスを再起動して変更を適用します。

sudo systemctl restart nginx

5。仮想ホストのテスト(オプション)

Nginx仮想ホストをテストするには、最初にドメイン名レコードをサーバーのIPアドレスにポイントする必要があります。この場合、サーバーのIPアドレスは192.168.122.101です。 。

Linuxを使用している場合は、/etc/hostsを開きます。 次のコマンドを使用して、デスクトップPC(テストを実行するPC)上のファイル:

sudo vim /etc/hosts

次に、以下に示すように、仮想ドメイン名を1つずつ追加します。

終了したら、ファイルを保存して閉じます。このようにして、私たちが所有していないドメインをテストできるようになります。

ブラウザを開き、www.website1.comと入力します。 およびwww.website2.com 一つずつ。それぞれ、両方のドメインのインデックスページが表示されます。

Nginxで2つの独立したドメインを正常に構成しました。

6。 Nginx仮想ホスト(サーバーブロック)を無効にする

Nginxで仮想ホストを無効にするには、仮想ホストファイルを有効にしているときに作成したシンボリックリンクを削除する必要があります。たとえば、website2.comを無効にするには 、次のコマンドを実行する必要があります:

sudo rm -rf /etc/nginx/sites-enabled/website2.com

変更を適用するには、Nginxサーバーを再起動する必要があります:

sudo systemctl restart nginx
結論

この記事では、Nginx仮想ホスト(サーバーブロック)を作成し、単一のLinuxサーバーで複数のドメインをホストする方法を説明します。別のドメインの仮想ホストを作成するには、同じ手順を繰り返します。しかし、もちろん、Nginxはもっと多くのことができます。

さらに、無料のSSL証明書を使用してウェブサイトを保護する方法を知りたい場合は、ガイド「Let’s Encrypt:Certbotを使用して無料のSSL証明書を取得する」を確認することをお勧めします。

Nginxサーバーのセットアップの詳細については、公式のNginxドキュメントを参照してください。

読んでくれてありがとう!この記事がお役に立てば幸いです。仮想ホストを設定できたと思います。ご不明な点がございましたら、お気軽にコメントをお寄せください。


Linux
  1. バックアップを作成する方法

  2. Pulseaudioで仮想出力を作成する方法は?

  3. Nginx仮想ホスト–Nginxサーバーブロック

  1. CentOS 7でNginx仮想ホスト(サーバーブロック)を設定する方法

  2. NginxでHTTPをHTTPSにリダイレクトする方法

  3. CentOS7でApache仮想ホストを作成する方法

  1. Azureクラウドで仮想ネットワークを作成する方法

  2. 複数のWebサイトをホストするためにApacheサーバー上に仮想ホストを作成する方法

  3. NGINXWebサーバーでWebサイトをホストする方法