[root@sv00 ~]# cat /etc/httpd/conf/httpd.conf
~
#ServerName www.example.com:80
~
<VirtualHost *:80>
# Default VirtualHost
# Use Main Setting
</VirtualHost>
<VirtualHost *:80>
ServerName sv01.example.dom
DocumentRoot /var/www/html/sv01
</VirtualHost>
[root@sv00 ~]# hostname
sv00.example.com
[root@sv00 ~]# httpd -S
VirtualHost configuration:
*:80 is a NameVirtualHost
default server sv00.example.com (/etc/httpd/conf/httpd.conf:357)
port 80 namevhost sv00.example.com (/etc/httpd/conf/httpd.conf:357)
port 80 namevhost sv01.example.dom (/etc/httpd/conf/httpd.conf:361)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
~
こんな感じで、hostname が FQDN で設定されていると、default の ServerName は hostname が使用される。
hostname が 「sv00」だけだと
[root@sv00 ~]# apachectl configtest
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192:168:0:1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
ってエラーになる。
このエラーが出たら、httpd.conf の ServerName を設定してあげる。
[root@sv00 ~]# vi /etc/httpd/conf/httpd.conf
~
ServerName www.example.com:80
~
<VirtualHost *:80>
# Default VirtualHost
# Use Main Setting
</VirtualHost>
<VirtualHost *:80>
ServerName sv01.example.dom
DocumentRoot /var/www/html/sv01
</VirtualHost>
すると、default の ServerName は httpd.conf の設定が使われる。
[root@sv00 ~]# httpd -S
VirtualHost configuration:
*:80 is a NameVirtualHost
default server www.example.com (/etc/httpd/conf/httpd.conf:357)
port 80 namevhost www.example.com (/etc/httpd/conf/httpd.conf:357)
port 80 namevhost sv01.example.dom (/etc/httpd/conf/httpd.conf:361)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
~
先頭に定義してある VirtualHost に ServerName を定義すると、先頭の ServerName が使われる。
[root@sv00 ~]# vi /etc/httpd/conf/httpd.conf
~
ServerName www.example.com:80
~
<VirtualHost *:80>
ServerName sv99.example.com
</VirtualHost>
<VirtualHost *:80>
ServerName sv01.example.dom
DocumentRoot /var/www/html/sv01
</VirtualHost>
[root@sv00 ~]# httpd -S
VirtualHost configuration:
*:80 is a NameVirtualHost
default server sv99.example.com (/etc/httpd/conf/httpd.conf:357)
port 80 namevhost sv99.example.com (/etc/httpd/conf/httpd.conf:357)
port 80 namevhost sv01.example.dom (/etc/httpd/conf/httpd.conf:361)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
~
この状態で、
[root@sv00 ~]# hostname sv00.example.com
[root@sv00 ~]# apachectl restart
ってやっても、default の ServerName は sv99.example.com のまま。
main の ServerName をコメントにしても、sv99.example.com のまま。先頭の VirtualHost の ServerName が default になる。
メイン |
VirtualHost |
hostname |
default |
#ServerName www.example.com |
- |
sv00 |
IPアドレス |
#ServerName
www.example.com |
- |
sv00.example.com |
hostname |
#ServerName
www.example.com |
ServerName
sv99.example.com |
sv00 |
IPアドレス |
#ServerName
www.example.com |
ServerName
sv99.example.com |
sv00.example.com |
hostname |
ServerName
www.example.com |
- |
sv00 |
メイン |
ServerName
www.example.com |
- |
sv00.example.com |
メイン |
ServerName
www.example.com |
ServerName
sv99.example.com |
sv00 |
VirtualHost |
ServerName
www.example.com |
ServerName
sv99.example.com |
sv00.example.com |
VirtualHost |