web-dev-qa-db-ja.com

1つのIPアドレスを持つApache複数のサブドメイン

これはおそらく尋ねられたでしょうが、私は正解を見つけることができないか、または私が見つけた答えが機能しません。

1つのドメインmydomain.comがあり、IPに解決しています。それを8.8.8.8と呼びましょう。 DNS設定は、2つのサブドメインがAレコードを使用してそのIPアドレスを指すようにします。これらはdev.mydomain.comstaging.mydomain.comです。どちらにも8.8.8.8を指すAレコードがあります。

サーバー(8.8.8.8)に2つの仮想ホストファイルがあります。これらは次のとおりです。

staging.mydomain.com.conf

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

そして...

dev.mydomain.com.conf

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>

問題は:

http://staging.mydomain.comまたはhttp:// devにアクセスするかどうかに関係なく.mydomain.com、私は常にstaging.mydomain.comに到達します(Apacheはこれらのファイルを提供します)。

Apacheとサーバーを再起動しました。 devが最初になるように.confファイルの順序を変更すると、常にそれが表示されます。任意の提案をいただければ幸いです。ありがとう!


更新

私は再びこの問題に立ち返ります!構文が正しいことを知っている場合、シンボリックリンクが正しくない可能性があります。それを削除して再度作成し、その間にApacheを再起動します。私はこれをやっただけで、何時間も頭を悩ませていました。 CentOSでは、httpd -Sを使用して使用可能なvhostを確認できます

更新2

この問題は、仮想ホストのApachelogファイルが存在しないか、書き込み可能でない場合にも発生することがわかりました。

22
Jongosi

NameVirtualHostディレクティブ を設定に追加する必要があるようです。

NameVirtualHost         *:80

状況によっては、Apacheが*:80 VirtualHostsを正しく処理できない場合があります。これらの場合、特定のIPに直接VirtualHostsをマッピングする必要があります。

NameVirtualHost         8.8.8.8:80

<VirtualHost 8.8.8.8:80>
    ServerName  staging.mydomain.com
    ServerAlias stage.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

<VirtualHost 8.8.8.8:80>
    ServerName  dev.mydomain.com
    ServerAlias development.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>

apachectl -t -D DUMP_VHOSTSを実行して、ApacheがVirtualHost構成を解析する方法を確認することもできます。

更新:コメントで述べたように、通常はNameVirtualHost *:80を使用できます。したがって、ほとんどの場合、仮想ホストを次のように構成できます。

NameVirtualHost         *:80

<VirtualHost *:80>
    ServerName  staging.mydomain.com
    ServerAlias stage.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/staging/
</VirtualHost>

<VirtualHost *:80>
    ServerName  dev.mydomain.com
    ServerAlias development.mydomain.com
    DocumentRoot /var/www/html/mydomain.com/dev/
</VirtualHost>
28
Ketola