apache 予備知識 −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ● SSL は1 つのIP に1 つだけ設定可能 NameVirtual 111.222.333.444 NameVirtual 555.666.777.888 DocumentRoot "/xxxx/xxxx/xxxx" DocumentRoot "/xxxx/xxxx/xxxx" ServerName test1.co.jp ServerName test1.co.jp DocumentRoot "/xxxx/xxxx/xxxx" DocumentRoot "/xxxx/xxxx/xxxx" ServerName test1.co.jp ServerName test1.co.jp 参考図:httpd.conf の設定例 基本的にapache でSSL を利用するにはIP ベースバーチャルホストにてapache を設定する必要があります。 参考図では、1 台のサーバーにネームベースバーチャルホスト とIP ベースバーチャルホスト を混在して設定してあります。SSL は1 つのIP で1 つだけ設定可能ですので、IP:111.222.333.444 に対して1 つのSSL が対応しています。IP:111.222.333.444 はネームベースバーチャルホスト 対応していますが、IP ベースバーチャルホスト にも対応できます。また、IP:555.666.777.888 にはIP:111.222.333.444 とは別領域のSSL が設定してあります。 このように、1 つのIP につきバーチャルホストを複数設定できるのです。そして、1 つのapache で複数のSSL を構築できるのです。 ● バーチャルホスト構成におけるIP アドレスアクセス時のサイト表示規則 通常、URL にはFQDN を入力し、サイトにアクセスします。しかし、URL にIP アドレスを入力したらどのサイトが表示されるのでしょうか?答えは、ネームベースかIP ベース、実装方法によって違ってきます。 > ネームベースバーチャルホストの場合 httpd.conf の最上部に記載している のサイトが表示されます。 > IP ベースバーチャルホストの場合 IP アドレスに対応する のサイトが表示されます。 ● バーチャル環境でのUserDir 利用について apache のUserDir をバーチャル環境で利用する場合には注意が必要です。 ▼ apache httpd.conf の設定内容 ---------------------------- UserDir public_html ServerName test01.spicy-islands.com DocumentRoot /home/webmaster-test01/webroot/htdocs User test01 Group ppp ServerName test02.spicy-islands.com DocumentRoot /home/webmaster-test02/webroot/htdocs User test02 Group ppp ▼ password ファイルの設定内容 ----------------------------- test01:x:101:100::/home/webmaster-test01/webroot/htdocs:/bin/bash test02:x:102:100::/home/webmaster-test02/webroot/htdocs:/bin/bash ------------------------------------------------------------ 上記の設定によると、test01 ユーザーにtest01.spicy-islands.com ドメインがtest02 ユーザーにtest02.spicy-islands.com ドメインが関連づいています。この状態では、UserDir が設定されているので、次のような現象が起こり非常に問題です。 /home/webmaster-test02/webroot/htdocs/public_html ディレクトリが存在する場合 http://test01.spicy-islands.com/~test02 でtest02 ユーザーの領域が閲覧できてしまう /home/webmaster-test01/webroot/htdocs/public_html ディレクトリが存在する場合 http://test02.spicy-islands.com/~test01 でtest01 ユーザーの領域が閲覧できてしまう UserDir をUserDir public_html とした場合、基本的にhttp://[DomainName]/~[UserID] にアクセスしたとき、[DomainName] にかかわらず[UserID] のホームディレクトリを表示するのです。 これを回避するには下記の対応を行う必要があります。 ・UserDir desabled とする ・VirtualHost ごとにUserDir を設定する さらに、バーチャルドメインごとに利用できる UserID を設定するには、次の設定をVirtualHost タグの中に書きます。 UserDir disabled UserDir enabled UserID01 UserID02 ...