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インストール
1 2 3 |
yum <span class="nt">-y</span> update yum <span class="nt">-y</span> <span class="nb">install </span>httpd systemctl start httpd |
それぞれのDocumentRootを作成
1 2 3 4 5 6 7 |
<span class="nb">mkdir</span> /var/www/web10 /var/www/web20 /var/www/web30 <span class="nb">echo</span> <span class="s1">'web10.vamdemicsystem.black name-base web-site.'</span> <span class="o">></span> /var/www/web10 /index.html <span class="nb">echo</span> <span class="s1">'web20.vamdemicsystem.black name-base web-site.'</span> <span class="o">></span> /var/www/web20 /index.html <span class="nb">echo</span> <span class="s1">'web30.vamdemicsystem.black name-base web-site.'</span> <span class="o">></span> /var/www/web30 /index.html |
httpd.confの最終行に追記
ipアドレスが1つしかなければ、*
でOK。
複数あれば対応するIPアドレスを書く。
/etc/httpd/conf/httpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 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> |
設定読み込み
1 |
systemctl restart httpd |
動作確認
サーバ自身から
hostsにそれぞれのFQDNを書く
1 2 3 4 5 6 7 |
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の扱いになるのはどうして?
1 2 3 4 5 6 7 8 9 10 11 |
[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 ~]# |