LoginSignup
1
0

バーチャルホストを使ってみた

Posted at

バーチャルホストとは

1つのサーバー内で複数のウェブサイトを公開できる技術のことです。サイトごとにサーバーを契約しなくてよいのでコスト効率が高いのが特徴です。

バーチャルホストには大きく分けて以下の2種類があります。

・名前ベースのバーチャルホスト

ApacheはHTTPリクエストのHostヘッダーを使用して、どのウェブサイトのコンテンツを提供するかを判断します。複数のドメイン名が同一のIPアドレスに関連づけられます。設定が簡単でコスト効率が良いため名前ベースのバーチャルホストが一般的です。

・IPベースのバーチャルホスト

ウェブサイトごとに異なるIPアドレスが割り当てます。Apacheはリクエストが到達したIPアドレスに基づいて、どのウェブサイトを提供するかを判断します。

Apacheのディレクトリツリー

Apache
/etc/httpd/
├── conf
│   ├── httpd.conf
│   └── magic
├── conf.d
│   ├── README
│   ├── autoindex.conf
│   ├── userdir.conf
│   └── welcome.conf
├── conf.modules.d
│   ├── 00-base.conf
│   ├── 00-dav.conf
│   ├── 00-lua.conf
│   ├── 00-mpm.conf
│   ├── 00-optional.conf
│   ├── 00-proxy.conf
│   ├── 00-systemd.conf
│   ├── 01-cgi.conf
│   ├── 10-h2.conf
│   ├── 10-proxy_h2.conf
│   └── README
├── logs -> ../../var/log/httpd
├── modules -> ../../usr/lib64/httpd/modules
├── run -> /run/httpd
└── state -> ../../var/lib/httpd

主要なディレクトリを説明します。(Red Hat系Linuxディストリビューションにおける主要なディレクトリです)

/etc/httpd/conf

Apacheの主要な設定ファイルが含まれています。httpd.confがApacheのグローバル設定ファイルです。

/etc/httpd/conf.d

メインの設定ファイルである httpd.conf とは別に、追加の設定ファイル(.confファイル)を置く場所として機能します。.confファイルは起動時に自動で読み込まれます。
今回行うバーチャルホストの設定ファイルはこのディレクトリに作成します。メインの設定ファイルであるhttpd.confに直接バーチャルホストの設定を記述することも可能ですが、管理が煩雑になりやすいので設定ファイルを分けるほうがおすすめです。

バーチャルホスト設定の手順

1Apacheをインストールする。

AWSのEC2をたててそこにApacheをインストールします。EC2をたてるまでは解説しませんのでサーバーについては各自準備していただけると幸いです。
Apacheがインストールされているか確認するコマンド

sudo systemctl status httpd

管理者権限で実行する必要があります。
・Apacheのインストール

sudo yum install httpd

・Apacheを起動する

sudo systemctl start httpd

サーバーを再起動したときなど自動でApacheが起動するように設定します。
・Apacheの自動起動設定

sudo systemctl enable httpd

2バーチャルホストの設定をする

2バーチャルホスト設定ファイルを編集する

Apacheの設定ファイル初期の設定ファイルなど
RedHat/CentOSの場合: /etc/httpd/conf/httpd.conf
デフォルトの設定は上記のファイルに設定されているようです。バーチャルホストの設定をする方法として上記ファイルを編集する方法と

以下ディレクトリに新しい設定ファイルを作成する方法があります。
/etc/httpd/conf.d/

今回は
/etc/httpd/conf/httpd.confの設定ファイルを編集する方法でバーチャルホストの設定をやってみたいと思います。

Apache 2.2 以前ではNameVirtualHostディレクティブの使用が必須でしたが、Apache 2.4以降では不要になりました。

DocumentRootはウェブサイトのファイルが格納されるディレクトリを指し、ServerNameはドメイン名を指定します。

<VirtualHost *:80>
  ServerName any
  DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
  ServerName test
  DocumentRoot /var/www/html/
</VirtualHost>
<VirtualHost *:80>
  ServerName b.test
  DocumentRoot /var/www/html/
</VirtualHost>

設定が終わったら以下のコマンドで設定ファイルに間違いがないかチェックします。

apachectl configtest

3表示するコンテンツを配置する

3Apacheの再起動を行います
4DNS設定の更新

初期設定ではドキュメントルートが/var/www/htmlになっています。このディレクトリに適当なHTMLを配置しましょう。

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test1</title>
</head>
<body>
    <h1>test1</h1>
</body>
</html>

設定が完了したらApacheを再起動します。
sudo systemctl restart httpd

hostsファイルを編集する

今回はテストのためhostsファイルにドメイン名を登録してアクセスしてみます。
hostsファイルを設定したホストからしか、バーチャルホストで設定したサイトにアクセスすることはできません。
windowsの場合
C:\Windows\System32\drivers\etc\c

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0