「名前ベースのバーチャルホスト」で、「ServerName に一致する名前のないバーチャルホストへのアクセス」があったとき

Apacheバーチャルホスト

概要

 状態:-  閲覧数:1,147  投稿日:2013-06-26  更新日:2013-06-26
前回の続き 

名前ベースのバーチャルホスト設定で、「ServerName に一致する名前のないバーチャルホストへのアクセス」があったときは、「一番最初の VirtualHost 設定」へアクセスされてしまう


陥った状況の詳細

 閲覧数:255 投稿日:2013-06-26 更新日:2013-06-26 

問題例


名前ベースのバーチャルホスト構築
・ドメイン2つ利用
・「ace.hoge.net」
・「red.e2blue.tk」

サブドメイン毎に「httpd.confファイル」を用意
・「▼/etc/httpd/conf.d/ace.hoge.net.conf」
・「▼/etc/httpd/conf.d/red.e2blue.tk.conf」

この時、「ServerName」 に記載していない「blue.e2blue.tk」へアクセスするとどうなるか?
・「▼/etc/httpd/conf.d/ace.hoge.net.conf」の内容が適用される
・すなわち、ファイル名が昇順(1番上に並ぶもの)が自動選択されてしまう


対応例1


・ファイル名が最も昇順(1番上に並ぶ)のダミー「.conf」ファイルを作成し、そこへアクセスできない内容を記載。意図的にエラーを発生させる
・具体的には、「▼/etc/httpd/conf.d/0.tk.conf」を作成し、ファイル内容の一番上に、取得していないドメイン名を記載
<VirtualHost *:80>
 ServerName 0.tokyo.net

・これで、「red.e2blue.tk」へアクセスすると違うドメイン内容が表示される不具合から解消される


対応例2


・そもそも「httpd.confファイル」を複数用意していること自体がおかしい
・一つにまとめ、一番上に「取得していないドメイン名」を意図的に記載することでエラーを発生させる

現状設定への変更手順

 閲覧数:170 投稿日:2015-11-24 更新日:2015-11-24 

1.新規confファイル作成


ファイル名自体は任意だが、confファイルを昇順で並べた際、必ず最初に読み込まれるファイル名で作成
・ここでは「0.allerror.conf」を作成
vim /etc/httpd/conf.d/0.allerror.conf

ドキュメントルート
・任意
・ここでは「/var/www/0allerror」を指定
<VirtualHost *:80>
 ServerName 0allerror
 DocumentRoot "/var/www/0allerror"
 DirectoryIndex index.html index.php
 ErrorLog /var/log/httpd/0allerror_error_log
 CustomLog /var/log/httpd/0allerror_access_log combined
 AddDefaultCharset UTF-8
 <Directory "/var/www/0allerror">
   AllowOverride All
 </Directory>
</VirtualHost>



2.404ページアップロード


ドキュメントルートへ404ページアップロード
・ここでは「/var/www/0allerror」へ404ページをアップロード
・なお、任意のサブドメイン経由で呼び出されるため、相対パスは使用不可
・js、img等、必ず絶対パスで記述


3.Apache再起動で設定反映


service httpd configtest
service httpd restart



バーチャルホスト設定には細心の注意を!



類似度ページランキング
順位 ページタイトル抜粋
1 ルートドメインでのみサイトが表示されない理由は、お名前.com の DNS設定 を誤っていたから 31
2 「Backspace」キーで前の文字が削除できない場合は、「Ctrl」+「u」 で カーソルの左側にある文字を削除 / 対症療法 30
3 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする 29
4 URLの「/?hoge=1」へアクセスした時だけ、「/」へリダイレクトするよう、.htaccessでURL操作 28
5 さくらVPSへは「http://localhost:ポート番号」でアクセス出来ない 27
6 /etc/groupでは、「そのグループをプライマリグループとするユーザ名」を確認することは出来ない 27
7 「Backspace」キーで前の文字が削除できない場合は、「stty erase ^H」 で eraseへの関連付けを「Backspace」キーに変更する / 原因療法 26
8 以前は普通に表示されていたWebサイト表示が、最近とくに遅くなっているので、原因を知りたい1 26
9 以前は普通に表示されていたWebサイト表示が、最近とくに遅くなっているので、原因を知りたい2 26
10 cron デーモンプロセスが正常動作しないときに確認すべき項目 26
11 PHP5をインストールしているCentOSで、PHP7も使用したい 25
12 CentOS7再起動時に、/run 直下に作成したディレクトリを削除しないようにする 25
13 さくらVPSへは「http://localhost」でアクセス出来ない 25
14 バーチャルホスト設定には細心の注意を! 25
15 PHPをインストールすると、どうなるの? 25
16 gzip や deflate を使用してリソースを圧縮することで、ネットワークで送信されるバイト数を減らすことができます。 25
17 ファイル拡張子などで条件を絞って全置換するためには、「grep」ではなく「find」を使用 25
18 それまで受信できていたcron経由によるメールを、正常受信できなくなった原因 24
19 「php -v」と「phpinfo()」のバージョンが異なる 24
20 tkドメイン。ハイフンが入ると、wwwなしでアクセス出来ない 24
2021/9/24 0:22 更新
週間人気ページランキング / 9-16 → 9-22
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 19
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 14
3 PHPのmb_send_mail関数でメール送信できない | メール処理システム 13
4 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 12
5 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 7
6 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 7
6 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 7
6 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 7
6 manページ日本語表示 | CentOS 7 (CentOS) 7
6 PHPファイルでchmodエラー | PHP(プログラミング言語) 7
7 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
7 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 6
7 さくらVPS0 6
8 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 5
9 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 4
9 echo と cat の違い 4
9 phpMyAdmin 4.4.3(phpMyAdmin) カテゴリー 4
9 tar: これは tar アーカイブではないようです 4
9 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/23 1:01 更新