• ベストアンサー

VirtualHostディレクティブの記述について

教えてください。 サーバで既に構築してあるサイトについては、httpd.confの中でVirtualHostを使っています。 追加で検証用のサーバを立てるのですが、IPアドレスでアクセスできるようにしたいです。IPアドレスでサイトにアクセスするようにするには、追加のVirtualHostを書き、ServerNameにIPアドレスを指定すれば良いでしょうか? 宜しくお願い致します。

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

  • ベストアンサー
回答No.1

VirtualHostにおいては、各ウェブサイトに違うIPアドレスがある 「IPベース」と、それぞれのIPアドレスに複数の名前がある「名前ベース」がありますが、今回の質問者様の場合IPアドレスと言う事なのでIPベースかと思います。 IPベースの場合、パソコンが物理コネクションを持っているか、バーチャルインタフェースを使用する必要があります。この辺りの設定が完了していると仮定して書かせて頂きます。 記述としては以下の通りです。 <VirtualHost 192.0.2.1> ServerName www.abc.dom ServerAdmin webgirl@abc.dom DocumentRoot /www/abc </VirtualHost> VirtualHostでIPアドレスを使用する。 全てのバーチャルホストが明示的にServerNameを持つようにする。 この辺りは、Apacheのドキュメントに記されているので読まれると良いかと思います。 http://httpd.apache.org/docs/2.2/ja/vhosts/ip-based.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Virtualhost

    現在、さくらのVPSを借りてサイト立ち上げ中です。 お名前.comで登録したドメインをそのサイトに当てる設定で困っています。 これまでのDocumentRootは/var/www/htmlになっており、その中にいくつかディレクトリ(example1, example2とします)があります。 ちなみにexample1はWordPressです。 そして、ブラウザのアドレスバーに「IP/example1」と打つことによりアクセスしていました。 今回はそのうちのexamlpe1に取得したドメイン(example1.com)を当てたいと思います。 そこで、ネットの記事を参考に/etc/httpd/conf.d/にvhost.confという名前で NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/example1 ServerName example1.com ServerAlias www.example1.com ErrorLog /var/log/httpd/example1.com/error_log CustomLog /var/log/httpd/example1.com/access_log combined <Directory "/var/www/html/example1"> AllowOverride All </Directory> </VirtualHost> と記述したファイルを作り、httpdを再起動しました。 すると、example1.comでexample1のトップページにはいけるのですが、example1内の他のページにはいけません。 また、「IP/example2」と打ってそちらのディレクトリのサイトにも行けなくなります。 考えられる原因はDocumentRootが/var/www/html/example1になっていて、「IP/example2」でアクセスできない。また、WordPress内のリンクがドメインに対応できていないため、いちいち「IP/example1/...」とページを探している。 とかでしょうか。。。そうだとして対処法が分かりません。 どうすれば、取得したドメインでサイトがうまく動作し、ドメインの無いサイトにもアクセスできるようになるでしょうか? よろしくお願いします。

  • 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の記述について

    サブドメイン *.hoge.com へアクセスされた際、 ドキュメントルート /var/www/subDomains/*/ を参照させたいので、httpd.confを以下のように設定しました。 <VirtualHost *> ServerAlias *.hoge.com VirtualDocumentRoot "/var/www/subDomains/%1/" ・・・  </VirtualHost> これはうまく動作するのですが、上記サブドメイン設定とは別に メインドメイン(hoge.com または www.hoge.com)へアクセスされた場合のみ ドキュメントルート /var/www/main/ を参照させたいのです。 なので、上記記述とは別に、 <VirtualHost *> DocumentRoot "/var/www/main/" ServerName www.hoge.com ・・・  </VirtualHost> を追加したのですが、このメインドメイン用記述は無視されてしまいます。 ※メインドメインへアクセスしても、サブドメイン用のVirtualDocumentRoot である /var/www/subDomains/www/ を参照してしまいます。 こうなってしまう原因は、サブドメイン用の記述である ServerAlias *.hoge.com の指定で、「www.hoge.com」が対象となっているからだと思いますが、 正規表現で「www.hoge.com」を除外する方法や、 その他解決策がありましたらご教授よろしくお願いします。 apacheのバージョンは2.2.15です。 ※ちなみに、正規表現による除外は「ServerAlias (?!www)*.hoge.com」を試してみましたがダメでした。 書き方が悪いのかもしれません。。

  • Virtualhost:名前ベースorIPペース?

    某レンタルサーバでVPSを使っています。 CentOS6.2(x86_64)、Apache/2.2.15 です。 で、1つの固定IPアドレスに対して、 3つのFQDNをvirtualhostで設定しようとしています。 (そのうち1つは、SSLもあり) で。。。 httpd.conf ===================================== NameVirtualHost *:80 <VirtualHost *:80> ===================================== ssl.conf ==================================== NameVirtualHost *:443 <VirtualHost *:443> ==================================== と、設定するのと、 httpd.conf ===================================== NameVirtualHost xx.xx.xxx.xxx:80 <VirtualHost xx.xx.xxx.xxx:80> ===================================== ssl.conf ==================================== NameVirtualHost xx.xx.xxx.xxx:443 <VirtualHost xx.xx.xxx.xxx:443> ==================================== と設定するのでは、どちらがのぞましいのでしょうか? どちらでも動くのですが・・・。 また、どういう仕組みの違いになっているのでしょうか? 下記2ページを読むと、自分のケースではどっちでも問題ないので、 どっちでもかまわないのでしょうか? //----------------------------------------------------------- 名前ベースのバーチャルホスト http://httpd.apache.org/docs/2.0/ja/vhosts/name-based.html IPベースのバーチャルホストWWWサーバの構築 http://www.aconus.com/~oyaji/www/apache_linux_virtual.htm よろしくお願いします。

  • 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の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エラーが出ればいいです) どう設定すれば実現できるでしょうか?

  • VirtualHostの記述を削除するスクリプトについて

    VirtualHostの記述を削除するスクリプトについて あるサーバからいくつかのドメインを別のサーバに移して運用することになりました。 そのための設定を行っているのですが、移設先のサーバにはそのまま設定要項を virtualhost.conf(仮定)に追記すればいいのですが、既存のサーバから 楽に削除する方法はないでしょうか。 全部で500くらいあるドメインの中から対象は100くらいあります。 そのため、手動で実行するにはあまりにも非効率でリスクがあります。 対象のServerNameがあるディレクティブを最小マッチで指定して ごっそり置換できればよいのですが・・・ shell(sh/bash),perl,PHPのいずれかを考えています。 ですが、私の知識不足もあり、PerlとPHPはよくわかりません。 詳細は勉強するとして、サンプルを頂けないでしょうか。 もしくは「できない!」なんて意見もお願いいたします。 補足ですが、作業サーバも大量にあり、環境もまちまちになってしまうので、 バージョン依存するようなものは避けていただけると助かります。 (とはいえ、Perlだったら5.x系、PHPだったら4.x系以降くらいで) 今のところPerl案が根強いので本カテゴリにて質問させていただきます。 よろしくお願いします。

  • 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での振り分けについて(SSL)

    VirtualHostを使って同一サーバーでのSSLの対応または非対応の振り分けをしています。 WinXP Apache 2.0.55 C:\Apache3 Tomcat 4.1 C:\Program Files\Apache Group\Tomcat 4.1 OpenSSL C:\OpenSSL apacheとtomcatは連携させています。 apache httpd.confの最後に以下を追加するとApacheが起動しません。 <VirtualHost localhost:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot "C:/Apache3/htdocs"   SSLDisable # ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost> SSLDisableを削除すると、問題なく起動しますがhttp,httpsと両方でアクセス出来てしまいます。 何がいけないんでしょうか? 最終的には、デフォルトでSSL不可にしておいてVirtualHostで 指定したディレクトリにSSLを施したいです。

  • 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が表示されるようになります。 何か設定が足りていないのでしょうか? 調べてもちょうど良い文献が見つからず四苦八苦しております。 原因が推測できれば教えていただけると助かります。

このQ&Aのポイント
  • スマホとNFCで連携しようとしても、プリンターでOKボタンを押しても認証してくれません。
  • お使いの環境はAndroidで、無線LANで接続されています。
  • 関連するソフト・アプリは年賀状brotherです。
回答を見る