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
- セキュリティグループ
手順
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 ~]#