web-dev-qa-db-ja.com

LinuxのApache2.4で名前ベースの仮想ホストを構成するにはどうすればよいですか?

私はLinuxとApacheの両方に不慣れです。

Apacheを使用してコンピューターでホストされているWebサイトがあります。ドメインがwww.myweb.comであると仮定します。ここで、3つのサブドメインa.myweb.comb.myweb.comを作成します。

私の最初の質問は、仮想ホストを使用してこれを行うことができるかどうかです。私が見つけることができるすべての仮想ホストの例は異なるドメインを使用しているので、それがサブドメインにも適用されるかどうかはわかりません。

私の2番目の質問は、仮想ホストがサブドメインで機能することに基づいています。私のhttpd.confファイルでは、DocumentRootの値は/srv/httpです。 /srv/httpの下に、defaultabの3つのフォルダーを作成しました。そして、これが私のhttpd-vhosts.confです:

<VirtualHost myIP:80>
    ServerAdmin [email protected] 
    DocumentRoot "/srv/http/default/public"
    ServerName www.myweb.com
    ServerAlias myweb.com
    ErrorLog "/srv/http/default/logs/error.log"
    CustomLog "/srv/http/default/logs/access.log" combined
    <Directory />
        Options FollowSymLinks Indexes
        Require all granted
    </Directory> 
</VirtualHost>


<VirtualHost myIP:80>
    ServerAdmin [email protected] 
    DocumentRoot "/srv/http/a/public"
    ServerName a.myweb.com
    ErrorLog "/srv/http/a/logs/error.log"
    CustomLog  "/srv/http/a/logs/access.log" combined
</VirtualHost>


<VirtualHost myIP:80>
    ServerAdmin [email protected] 
    DocumentRoot "/srv/http/b/public"
    ServerName b.myweb.com
    ErrorLog "/srv/http/b/logs/error.log"
    CustomLog  "/srv/http/b/logs/access.log" combined   
    <Directory />
        Options FollowSymLinks Indexes
        Require all granted
    </Directory> 
</VirtualHost>

問題は、ブラウザでwww.myweb.commyweb.coma.myweb.com、またはb.myweb.comと入力すると、常にDocumentRootに移動することです。 /srv/http。それで、私は何か間違ったことをしましたか、またはサブドメインはこのように機能しませんか?どうもありがとう。

1
xoroth

仮想ホストセクションの先頭で<VirtualHost myIP:80>を使用していることに気づきました。名前ベースの仮想ホストすべてに<VirtualHost *:80>を使用します-名前ベースの仮想ホスト用にサーバーを構成する場合と、サーバーを構成する場合の違いについては、 Apache仮想ホスト構成のセットアップ方法(例を含む) を参照してください。 IPベースの仮想ホスト。サーバーに複数のIPアドレスがあり、サイトが異なるIPアドレスで応答するようにしたい場合は、IPアドレスを入力すると思いますが、サーバーがリッスンしているIPアドレスを使用してすべてのサイトにアクセスできる必要がある場合は、仮想ホストセクションのIPアドレスの代わりに「*」を使用して、違いが生じるかどうかを確認します。それ以外の点では、構成は私の構成と似ています。また、httpd -Sを試して、その記事で提案されているVirtualHost構成シナタックスをチェックし、そのチェックによってApacheが報告するものが間違っているかどうかを確認することもできます。

1
moonpoint

Apache Documentation で必要とされるように、 'Directory'ディレクティブでフルパスを使用する必要があります。構成を使用して、それぞれのホスト名からhttpd.confで構成された「DocumentRoot」パスへのアクセスを実際に構成します。

デフォルトのWebサイト(www)の「ディレクトリ」構成セクションは次のようになります。

<Directory /srv/http/default/public>
    Options FollowSymLinks Indexes
    Require all granted
</Directory>

また、ディレクトリ "/"のデフォルトのアクセスはすべてのアクセスを許可することです。つまり、ApachehttpdはURLからマップされたすべてのファイルを提供します。したがって、ドキュメントで提案されているように、httpd.confでより制限されたものに変更することをお勧めします。

<Directory "/">
    Require all denied
</Directory>
0