Database JUNKY

MySQL,MariaDBを中心としたブログです

apacheを名前ベースバーチャルホストで運用する際のデフォルトサーバについて

しょうもないところでハマったのでメモ

バーチャルホストの説明はもうわかっている(つもり)なので、割愛

バーチャルホストの例 - Apache HTTP サーバ バージョン 2.2

例えば、上記のような設定にした場合、デフォルトサーバは、 www.example.com になります。あ、、ちなみにデフォルトサーバって対象のサーバに、www.example.comでもなく、www.example.orgのアクセスでもない場合、例えばIPでのアクセスもしくは、バーチャルホストに設定されていない場合のドメイン名でアクセスした場合に適用されるデフォルトのドキュメントルートのことをさします

一言でいうと、一番最初に読み込まれた設定がデフォルトサーバになるので、この場合、www.example.comになるわけです。

これが1ファイル内の設定なら良いのですが、じゃあ、confファイルをドメイン毎に分けた場合、デフォルトサーバは何になるのっていうのを検証しました。

例えば、上記の設定を、 /etc/httpd/conf.d/www.example.com.conf/etc/httpd/conf.d/www.example.org.conf の2ファイルに分けた場合、 先に読まれる方(デフォルトサーバになる方)ってどっちなんだろの解答は、ファイル名が英数順になります。まぁ、どっちでもいい人はそれでも問題ないのですが(笑) 例えば、管理者ページ(admin.example.net)のドメインとそーでないドメイン(www.example.net)の2つのconfファイルを作成した場合、デフォルトページはadmin.example.netになっちまいます。なんか気持ち悪いですよね汗

そんな場合ファイル名を1.www.example.net.conf2.admin.example.net にすれば、デフォルトドメインは、www.example.netになりますよ!ってただそれだけの話です(笑)

  • 余談ですが、デフォルトサーバの順序は、httpd -S コマンドで確認できます
$ httpd -S
VirtualHost configuration:
*:80                   is a NameVirtualHost
         default server www.example.net (/etc/httpd/conf.d/1.www.example.net.conf:1)
         port 80 namevhost www.example.net (/etc/httpd/conf.d/1.www.example.jp.conf:1)
         port 80 namevhost admin.example.net (/etc/httpd/conf.d/2.admin.example.net.conf:1)

以上、メモでした

f:id:hit10231023:20191024111008j:plain