ApacheのVirtualHost設定でサブドメインが正しくアクセスされない問題の解決方法

このQ&Aのポイント
  • ApacheのVirtualHostを設定して、http://yyy.xxxxx.jpとhttp://zzz.xxxxx.jpのサブドメインを正しくアクセスする方法を教えてください。
  • 現在の設定では、http://yyy.xxxxx.jpとhttp://zzz.xxxxx.jpにアクセスするとhttp://xxxxx.jpと同じ結果が表示されてしまいます。
  • サブドメインが付与されているアドレスは、ポート指定が正しく指定された場合のみアクセスされるようにしたいです。
回答を見る
  • ベストアンサー

ApacheのVirtualHostを設定したい

ApacheのVirtualHostを設定したい http://xxxxx.jp http://yyy.xxxxx.jp:5041 http://zzz.xxxxx.jp:5042 という3種類の接続方法をしたいが為に、VirtualHostを設定していますが、うまく設定できずに 困っています。 Listen 80 Listen 5041 Listen 5042 NameVirtualHost 111.222.333.444:80 NameVirtualHost 111.222.333.444:5041 NameVirtualHost 111.222.333.444:5042 <VirtualHost 111.222.333.444:80> ServerName xxxxx.jp DocumentRoot /test </VirtualHost> <VirtualHost 111.222.333.444:5041> ServerName yyy.xxxxx.jp DocumentRoot /test2 </VirtualHost> <VirtualHost 111.222.333.444:5042> ServerName zzz.xxxxx.jp DocumentRoot /test3 </VirtualHost> 今現状、こんな設定なのですが、これだと http://yyy.xxxxx.jp http://zzz.xxxxx.jp とアクセスすると、 http://xxxxx.jp と同じ結果が表示されてしまいます。 サブドメインが付与されているアドレスは、あくまでもポート指定が 5041、5042と正しく指定された場合のみアクセスされてほしいです。 (そうじゃないときは何らかのHTTPエラーが出ればいいです) どう設定すれば実現できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#122246
noname#122246
回答No.2

# 追加 # 割り当てられていないサブドメインやIP アドレス直の時 <VirtualHost *:80> ServerName dummy DocumentRoot /dummy </VirtualHost> <VirtualHost 111.222.333.444:80> ServerName xxxxx.jp DocumentRoot /test </VirtualHost> <VirtualHost 111.222.333.444:5041> ServerName yyy.xxxxx.jp DocumentRoot /test2 </VirtualHost> <VirtualHost 111.222.333.444:5042> ServerName zzz.xxxxx.jp DocumentRoot /test3 </VirtualHost>

naktak
質問者

お礼

ダミーって、本当にダミーですね! そんな設定がいけるんですか!! 試してみます。ありがとうございます。

その他の回答 (1)

noname#122246
noname#122246
回答No.1

該当しない場合、一番最初のVirtualHost タグに転送されます。 一番最初のVirtualHost タグにダミー用のを追加すればOK かと。

naktak
質問者

お礼

ご回答ありがとうございます。 設定してみましたが、80ポートの設定が記されている関係上、 どうやってもヒットしてしまうようで、諦めました。 幸いにもグローバルIPアドレスが2つ割り振られている為、 サブドメインが付与されているアドレスについては、別の IPアドレスからアクセスされた場合の設定へと変更しました。 (DNSも含み) もし、具体的な設定内容をご提示頂けるようでしたら お願い致します。

関連するQ&A

  • VirtualHostの設定

    名前ベースのVirtualHostの設定を試してるのですが、 Permission denied: file permissions deny server accessとなり アクセスできません。wwwはアクセスできます。 サイトでいろいろ調べているのですが、解決できませんでした。 パーミッションも777に設定しています。httpd.confの設定を載せます。pperというユーザーを追加しました。 *ホストとドメインは仮名 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /var/www/html ServerName www.pani.mydns.jp ErrorLog logs/www.pani.mydns.jp-error_log CustomLog logs/www.pani.mydns.jp-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /home/pper/html ServerName test.pani.mydns.jp ErrorLog logs/test.pani.mydns.jp-error_log CustomLog logs/test.pani.mydns.jp-access_log common </VirtualHost>

  • Apache VirtualHost でワイルドカード(?)設定

    Apache2.2.3を利用しています。 virtualhost.confに50程度のサブドメインを、 下記のように設定をしています。 *************************************************** <VirtualHost *:80>   ServerName suzuki.example.com   DocumentRoot /var/www/html/suzuki/ </VirtualHost> <VirtualHost *:80>   ServerName sato.example.com   DocumentRoot /var/www/html/sato/ </VirtualHost> <VirtualHost *:80>   ServerName yamada.example.com   DocumentRoot /var/www/html/yamada/ </VirtualHost> ・ ・ ・ *************************************************** つまり *************************************************** <VirtualHost *:80>   ServerName ▲▲▲.example.com   DocumentRoot /var/www/html/▲▲▲/ </VirtualHost> *************************************************** のようなルールになっているのですが、 これをワイルドカード使ってできないでしょうか? 宜しくお願いします!

  • ApacheのVirtualHostの設定すると、メイン(?)の設定に影響してしまう

    いつもお世話になっております。 ApacheのVirtualHostの設定をして複数サイトを運営したいと思ったのですが、VirtualHostの設定をしたところ、VirtualHostでないURLの方までドキュメントルートがVirtualHostに設定した方のページが表示されるようになってしまいました。 説明が下手すぎるので、具体的にはieserverというDDNSにて aaaaa.dip.jp bbbbb.dip.jp という二つのサブドメインを取得しまして(ドメインは適当です) httpd.confのSection 2 'Main' server configrationには ServerName aaaaa.dip.jp:80 DocumentRoot "/var/www/html" と記述し、 Section 3: Virtual Hostsには NameVirtualHost *:80 <VirtualHost *:80> ServerName bbbbb.dip.jp DocumentRoot /var/www/sample <Directory "/var/www/sample"> Order allow,deny Allow from all </Directory> </VirtualHost> と記述しています。 これで、 http://aaaaa.dip.jpでアクセスすれば/var/www/htmlの中のindex.htmlが、 http://bbbbb.dip.jpでアクセスすれば/var/www/sampleの中のindex.htmlが 表示されると思ったのですが、 どっちのURLでアクセスしても/var/www/sampleの中のindex.htmlが表示されて しまうのです。 ちなみにVirtualHostの設定をコメントアウトしてからリスタートすると /var/www/htmlの中のindex.htmlが表示されるようになります。 何か設定が足りていないのでしょうか? 調べてもちょうど良い文献が見つからず四苦八苦しております。 原因が推測できれば教えていただけると助かります。

  • apacheのvirtualhostについて

    Apache/1.3.22のname virtual hostについておたずねします。 httpd.confの記述で NameVirtualHost 219.***.***.*** <VirtualHost 219.***.***.*** ServerName www.********.co.jp DocumentRoot /home/web/docs ScriptAlias /cgi-bin/ /home/web/cgi-bin/ ErrorLog /home/web/logs/error_log CustomLog /home/web/logs/access_log combined </VirtualHost <VirtualHost 219.***.***.*** ServerName test.********.co.jp DocumentRoot /home/web/test ScriptAlias /cgi-bin/ /home/web/test-cgi-bin/ ErrorLog /home/web/logs/test-error_log CustomLog /home/web/logs/test-access_log combined </VirtualHost としているのですがVirtualHostが反映されません。 また、LAN内のサーバーですのでnamed.confはviewを使用し、zoneファイルは2通り用意しており外部からも内部からも正常に正引きできます。 どのような原因が考えられるでしょうか? また、対処法はどのようにすればよいのでしょうか? ご教授いただきますようお願いいたします。

  • apache VirtualHostが実行されない

    Apache設定初心者です。 httpd.conf で <VirtualHost> 内の DocumentRoot が表示されなくて困っています。 https://111.112.113.114 を実行すると DocumentRoot が /home/httpd/hoge/err/httpdocs となってしまいます(VirtualHost内の DocumentRoot が実行されない) よろしくお願いします。 【記述内容】 NameVirtualHost 111.112.113.114:80 NameVirtualHost 111.112.113.114:443 DocumentRoot /home/httpd/hoge/err/httpdocs <IfModule mod_ssl.c> <VirtualHost 111.112.113.114:443> ServerName hoge.co.jp:443 ServerAlias www.hoge.co.jp UseCanonicalName Off SuexecUserGroup use01grp01 DocumentRoot /home/httpd/hoge/httpdocs ErrorLog /usr/hoge/logs/error ScriptAlias /hoge-bin/ /usr/hoge-bin/ Alias /hoge1 /usr/hoge1/ Alias /hoge2 /use/hoge2 SSLEngine on SSLVerifyClient none SSLCertificateFile /usr/hoge/ctr/hoge.ctr </VirtualHost> </IfModule>

  • サブドメイン(test.*****.jp)の設定方法

    現在プライベートサーバを借りており、root権限を持っています。 現在、 www.*****.jp *****.jp で、アクセスするとページを見れるのですが、 test.*****.jp のようなテスト環境を用意したいので、以下のように、httpd.confに 設定して、再起動しましたが、test.*****.jp が見れません。 NameVirtualHost *:80 <VirtualHost *:80>   ServerName www.*****.jp   DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:80>   ServerName test.*****.jp   DocumentRoot /var/www/html_test </VirtualHost> エラーログには下記のようなものがありました。 File does not exist: /var/www/html/dns_zones.txt DNSの設定?が必要なのでしょうか? この変の知識がなく、さっぱり分かりません。 何卒、よろしくお願いいたします。 ※OSは、CentOS5です。

  • apacheのバーチャルホストの設定方法

    MacOSX Snow Leopardを使っています。 apacheは2.2.11です。 httpd.confで/http/Virtual.confを読み出して設定しています。 Virtual.conf ------- # #VirtualHost.conf # NameVirtualHost *:80 <VirtualHost *:80> ServerName www.xxxxx.com DocumentRoot /http/www.xxxxx.com </VirtualHost> ------- ※www.xxxxx.comは、正しく設定されています。 の設定をし、httpdを再起動したところ、IPアドレスでアクセスしても、ドメインでアクセスしても、httpコード403になってしまいます。 *httpdで起動時、エラーはでません。 *httpd -tはSyntaxOK *httpd -sは   VirtualHost configuration:   wildcard NameVirtualHosts and _default_ servers:   *:80 is a NameVirtualHost    default server www.xxxxx.com (/http/Virtual.conf:11)    port 80 namevhost www.xxxxx.com (/http/Virtual.conf:11)   Syntax OK です。 virtual.confをすべてコメントアウトしたところしっかりアクセスできました。 よろしくお願いします。

  • Apacheのバーチャルホストで設定したドメインで上の階層にアクセスできてしまいます

    Apacheのバーチャルドメインにてmydomain.jpを/www/mydomainに割り振ったのですが 試しに上の階層にファイルを置いてphpでアクセスしてみたのですが、アクセスできてしまいました。。。 これはセキュリティ上よろしくないと思うのですが、指定フォルダ以上にアクセスできないように設定するにはどうすればいいのでしょうか(アクセス出来ないようにしたいです)。 あまりサーバーに詳しくないので設定方法のキーワードなどヒントだけでもご教授いただければと存じます。 httpd.confの設定--- NameVirtualHost *:80 <VirtualHost *:80> ServerName www.mydomain.jp ServerAlias mydomain.jp *.mydomain.jp DocumentRoot /www/mydomain </VirtualHost> phpの記述例--- include_once("../test.php");//上の階層のファイルにアクセスできてしまう

  • VirtualHostでIPとドメインアクセスで設定を分ける場合ドメインは1つでOKでしょうか?

    ドメイン指定の場合とIPでアクセスがあった場合で ドキュメントルートを分けたいのですが、 下記のようにサブドメイン1つでもVirtualHost可能でしょうか? <VirtualHost 210.100.100.100> DocumentRoot /var/www/html/htdocs ServerName www.a.jp </VirtualHost> <VirtualHost 210.100.100.100> DocumentRoot /var/www/html2/htdocs </VirtualHost>

  • ApacheとTomcatの連携を、特定ポートの時だけ行いたい

    ApacheとTomcatの連携を、特定ポートの時だけ行いたい 【httpd.conf】 Include conf/vhost.conf 【vhost.conf】 Listen 5041 <VirtualHost *:5041> ServerName xxxxx DocumentRoot /var/www/myadmin </VirtualHost> Listen 5042 <VirtualHost *:5042> ServerName xxxxx DocumentRoot /var/www/labs </VirtualHost> 【proxy_ajp.conf】 ProxyPass /PG ajp://localhost:8009/PG 今現状、こんな感じになっています。 この時、  http://xxxxx/  http://xxxxx/PG/  http://xxxxx:5041/  http://xxxxx:5042/ は、動いて欲しいです。 が、  http://xxxxx:5041/PG/  http://xxxxx:5042/PG/ は動いて欲しくありません。 ApacheとTomcatの連携を、80ポートだけで行いたいのですが、 可能となる設定方法がありましたらご教示下さい。