Apacheエラー「mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results」の原因と解決方法

Apacheの設定を変更し、Apacheを再起動すると、

mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results

というエラーメッセージが表示されることがある。

《例》
[root@test conf.d]# /etc/rc.d/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
[Sat Apr 25 10:45:11 2015] [error] VirtualHost 192.168.0.20:0 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
[Sat Apr 25 10:45:11 2015] [error] VirtualHost 192.168.0.20:0 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
                                                           [  OK  ]

エラーメッセージから判断すると、VirtualHostNameVirtualHostというApacheの設定項目2つについて、設定内容に問題があると推測できるので、Apacheの設定ファイルに記述しているVirtualHostNameVirtualHostに関連する設定について確認する。

<Apacheの全体設定ファイル>
/etc/httpd/conf/httpd.conf
 NameVirtualHost 192.168.0.20:80

<Apacheの個別設定ファイル>
/etc/httpd/conf.d/test1.conf
 <VirtualHost 192.168.0.20>

/etc/httpd/conf.d/test2.conf
 <VirtualHost 192.168.0.20>

 

これらを見比べると、VirtualHostとNameVirtualHostで同じもの(上記の例ではホスト名ではなくIPアドレス「192.168.0.20」)を指定しているが、末尾に「:80」というポート番号を指定しているか、指定していないか、という違いがある。

エラーメッセージを再度見直すと、「mixing * ports and non-* ports」とあり、ポート番号あり(* ports)とポート番号なし(non-* ports )を混在(mixing)させることはサポートされていない(is not supported)という意味のようである。

つまり、このApacheのエラーを解消するには、ポート番号あり、ポート番号なしの設定を混在させない設定に変更すればよい、ということが分かる。

 

上記の例の場合、/etc/httpd/conf/httpd.confを修正すれば1ファイルの修正で済むので、ひとまず、/etc/httpd/conf/httpd.confを修正してエラーが解消するかどうかを確認する。

 

<修正前>
NameVirtualHost 192.168.0.20:80

<修正後>
NameVirtualHost 192.168.0.20

修正点は、ポート番号を指定する「:80」の部分の削除のみ。

これで、/etc/httpd/conf.d/配下のconfファイル(test1.conf、test2.conf)のVirtualHostのようにポート番号なしの記述と同じになり、ポート番号あり(* ports)とポート番号なし(non-* ports )の設定が混在(mixing)しなくなる。

 

Apacheを再起動すると、エラーが解消されることを確認できる。

VirtualHostとNameVirtualHostの設定を記述する際には、ポート番号あり、なしについて注意をする必要があるなぁ。

前へ

PHPの変数「$_SERVER['SERVER_ADDR']」でサーバのIPアドレスを取得する方法

次へ

Internet Explorer 11のユーザエージェント