LoginSignup
6
7

More than 3 years have passed since last update.

Apacheで名前ベースでVirtualHostを振り分ける

Last updated at Posted at 2019-09-04

Apacheによる振り分けパターン

  • IPアドレスベース
  • ポート
  • FQDN(ServerName)

3通りの振り分け方がある。
今回は、FQDN(ServerName)で検証します

FQDNベースでVirtualHost

1つのIPアドレスに複数のFQDNを指定して、それぞれ異なるWebサーバを参照させるようにしたい。
Webブラウザが送信するhttpリクエストにHostヘッダが必要になるが、ほとんどのブラウザで対応している。

環境

  • Amazon Linux 2
  • httpd-2.4.39-1.amzn2.0.1.x86_64
  • セキュリティグループ

image.png

手順

Apacheインストール


yum -y update
yum -y install httpd
systemctl start httpd

それぞれのDocumentRootを作成

mkdir /var/www/web10 /var/www/web20 /var/www/web30
echo 'web10.vamdemicsystem.black name-base web-site.' > /var/www/web10/index.html
echo 'web20.vamdemicsystem.black name-base web-site.' > /var/www/web20/index.html
echo 'web30.vamdemicsystem.black name-base web-site.' > /var/www/web30/index.html

httpd.confの最終行に追記

ipアドレスが1つしかなければ、*でOK。
複数あれば対応するIPアドレスを書く。

/etc/httpd/conf/httpd.conf
# Add VirtualHost
NameVirtualHost *
<VirtualHost *:80>
        ServerName      web10.vamdemicsystem.black
        DocumentRoot    /var/www/web10
</VirtualHost>
<VirtualHost *:80>
        ServerName      web20.vamdemicsystem.black
        DocumentRoot    /var/www/web20
</VirtualHost>
<VirtualHost *:80>
        ServerName      web30.vamdemicsystem.black
        DocumentRoot    /var/www/web30
</VirtualHost>

設定読み込み

systemctl restart httpd

動作確認

サーバ自身から

hostsにそれぞれのFQDNを書く

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost6 localhost6.localdomain6

127.0.0.1   web10.vamdemicsystem.black
127.0.0.1   web20.vamdemicsystem.black
127.0.0.1   web30.vamdemicsystem.black

curlで確認すると、うまいこと振り分けられているよう。OK!
localhostはWeb10の扱いになるのはどうして?

[root@ip-172-31-38-89 ~]# curl http://web10.vamdemicsystem.black
web10.vamdemicsystem.black name-base web-site.
[root@ip-172-31-38-89 ~]# curl http://web20.vamdemicsystem.black
web20.vamdemicsystem.black name-base web-site.
[root@ip-172-31-38-89 ~]# curl http://web30.vamdemicsystem.black
web30.vamdemicsystem.black name-base web-site.
[root@ip-172-31-38-89 ~]# curl http://web40.vamdemicsystem.black
curl: (6) Could not resolve host: web40.vamdemicsystem.black
[root@ip-172-31-38-89 ~]# curl http://localhost
web10.vamdemicsystem.black name-base web-site.
[root@ip-172-31-38-89 ~]#

外部からも確認

DNSサーバに登録
image.png

web10OK!
image.png

web20OK!
image.png

web30OK!
image.png

6
7
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
6
7