2017-04-26

apache 2.4 の ServerName

[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

0 件のコメント:

コメントを投稿

.htaccessで403を404で返す

久しぶりにリライトルールを書いたよ。 ドキュメントルートに.htaccessを置く場合の記述↓ # 403.html は実体がなくてよい。この設定をすることで、あっても使われなくなる。 ErrorDocument 403 /403.html # 独自の404ページをドキュメ...