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

Apache 仮想ホスト構成のセットアップ方法 (例付き)

Apache Virtual Host を使用すると、同じサーバーで複数の Web サイトを実行できます。

たとえば、1 つの Apache Web サーバーが実行されている 1 つの物理サーバー上で、thegeekstuff.com と top5freeware.com の両方を実行できます。

図:Apache 仮想ホスト (複数の Web サイト、1 つの Apache)


Apache 仮想ホスト構成には、1) IP ベースの仮想ホストと 2) 名前ベースの仮想ホストの 2 種類があります。ほとんどのシナリオでは、名前ベースの仮想ホストが推奨されます。

IP ベースの仮想ホスト

この構成では、2 つの Web サイト (異なる IP アドレスを持つ) を Apache を実行するサーバーに向ける場合、その物理サーバーには 2 つの異なる IP アドレスが構成されている必要があります。

これは、サーバーには 2 つのイーサネット カードが必要であり、それぞれが Apache 仮想ホストが提供する対応する Web サイトの IP アドレスに構成されている必要があることを意味します。したがって、これはほとんどの面で実用的ではなく、使用しないでください。

次の例では、サーバーに 2 つの NIC カードが含まれており、1 枚は thegeekstuff.com 用に 192.168.101.1 の IP アドレスで構成され、もう 1 枚は top5freeware.com 用に 192.168.102.1 で構成されています。これらの IP アドレスは両方とも、IP ベースの仮想ホストを使用して、そのサーバー上で実行されている単一の Apache Web サーバーによって提供されます。

図:Apache IP ベースの仮想ホスト

名前ベースの仮想ホスト

この構成では、Apache ウェブサーバーがリクエストを受信すると、HTTP ヘッダーでホスト名を検索し、ホスト名に応じて異なるウェブサイトを提供します。その物理サーバーで必要な IP アドレスは 1 つだけなので、これは非常に簡単です。ただし、同じ IP アドレスを指す複数の Web サイト名で DNS を更新します。実際には、名前ベースの仮想ホスト構成のみを使用します。

次の例では、サーバーには 192.168.101.1 IP アドレスで構成された NIC カードが 1 つだけ含まれています。 thegeekstuff.com と top5freeware.com の両方の Web サイトの DNS エントリは、192.168.101.1 の IP アドレスを指しています。 Apache はリクエストを受信すると、HTTP ヘッダーでホスト名エントリを検索し、対応する Web サイトを提供します。

図:Apache 名前ベースの仮想ホスト

1. httpd.conf 内の httpd-vhosts.conf のコメントを外します

ソースから Apache 2 をインストールした場合、デフォルトでは、次の行が httpd.conf ファイルでコメント化されます。この行のコメントを外してください。

# vi /usr/local/apache2/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf

2.仮想ホストのセットアップ

以下に示すように httpd-vhosts.conf を変更して、2 つのホストの名前付きベースの仮想ホスト設定をセットアップします。

  • NameVirtualHost *:80 – すべての名前ベースの仮想ホストがデフォルト ポート 80 でリッスンすることを示します
  • – これらの VirtualHost タグの間に、すべての仮想ホストのすべての apache 構成パラメーターを囲みます。 virtualhost コンテナ内では、任意の apache ディレクティブを使用できます。
  • 次の例では、同じポート 80 でリッスンする thegeekstuff.com と top5freeware.com の仮想ホストをセットアップしています。そのため、各 Web サイトに 1 つずつ、2 つの があります。 .
  • thegeekstuff.com にアクセスすると、/usr/local/apache2/docs/thegeekstuff の下のファイルが Apache によって提供されます。このサイトの access_log と error_log は /usr/local/apache2/logs/thegeekstuff に保存されます
# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache2/docs/thegeekstuff"
    ServerName thegeekstuff.com
    ServerAlias www.thegeekstuff.com
    ErrorLog "logs/thegeekstuff/error_log"
    CustomLog "logs/thegeekstuff/access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/apache2/docs/top5freeware"
    ServerName top5freeware.com
    ServerAlias www.top5freeware.com
    ErrorLog "logs/top5freeware/error_log"
    CustomLog "logs/top5freeware/access_log" common
</VirtualHost>

3. VirtualHost 構成の構文を確認してください

以下に示すように、「httpd -S」を使用して仮想構成の構文を確認します。すべてが適切にセットアップされると、「Syntax OK」と表示されるだけです。

# /usr/local/apache2/bin/httpd -S
VirtualHost configuration:
Syntax OK

何かが適切に構成されていない場合、以下に示すように「ディレクトリが終了しません」というメッセージを含む警告メッセージが表示されます。

# /usr/local/apache2/bin/httpd -S
Warning: DocumentRoot [/usr/local/apache2/docs/top5freeware] does not exist
Warning: ErrorLog [/usr/local/apache2/logs/thegeekstuff] does not exist
Syntax OK

4. Apache を再起動してテストします

# /usr/local/apache2/bin/apachectl restart

これで、thegeekstuff.com (または www.thegeekstuff.com) にアクセスすると、Apache は /usr/local/apache2/docs/thegeekstuff ディレクトリからファイルを提供します。

top5freeware.com (または www.top5freeware.com) にアクセスすると、同じサーバーで実行されている同じ apache が /usr/local/apache2/docs/top5freeware ディレクトリからファイルを提供します。

繰り返しますが、名前ベースの仮想ホストが適切に機能するには、これらの両方の Web サイトの DNS エントリが、Apache Web サーバーが実行されている物理サーバーの同じ外部 IP アドレスを指している必要があります。


Linux
  1. Apacheで名前ベースの仮想ホストを設定する

  2. zpool コマンドの例を使用して Linux で ZFS ファイルシステムをセットアップする方法

  3. ubuntuでApache仮想ホストを構成する方法

  1. RedHatでApachehttpdを使用してSSL/TLSを設定する方法

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

  3. Ubuntuで3ノードのApacheTomcatクラスターをセットアップする方法

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

  2. Ubuntu18.04LTSでApache仮想ホストを構成する方法

  3. Apacheを使用してUbuntuサーバーでWordPressをセットアップする方法