web-dev-qa-db-ja.com

ドメインとIPを持つApacheNameVirtualHost

Apache2で設定しようとしているIPがいくつかあります。探してみましたが、頼みすぎのようです。

各IPのすべての直接リクエスト(例: http://155.155.155.1 )を専用のDocumentRoot(例:/www/155.155.155.00/)にルーティングしたいと思います。

同じIP(155.155.155.100)に解決されるドメインには、個別のDocumentRootがあります。これまでのところ、ApacheはIPのルーティングに問題はありませんが、ドメイン間でIPを共有することは好きではありません。

これまでの私の設定(機能しません。IPとドメインの両方が/www/155.155.155.101にルーティングされます-それらは分離されていません):

NameVirtualHost 155.155.155.100
NameVirtualHost 155.155.155.101
NameVirtualHost 155.155.155.102
NameVirtualHost 155.155.155.103

<VirtualHost 155.155.155.101>
DocumentRoot /www/155.155.155.101
</VirtualHost>

<VirtualHost 155.155.155.101>
ServerName www.domain1.com
ServerAlias www.domain1.com
DocumentRoot /www/domain1.com
</VirtualHost>

助けていただければ幸いです!

1
darulkffr

テストされていません。私はあなたのホスト名がそれぞれ単一のIP上にあると仮定しました。そうでない場合は、代わりに単一のNameVirtualHost *を使用して、どこでも<VirtualHost *>で一致させることができます。

NameVirtualHost 155.155.155.100:80
NameVirtualHost 155.155.155.101:80
NameVirtualHost 155.155.155.102:80
NameVirtualHost 155.155.155.103:80

<VirtualHost 155.155.155.100:80>
ServerName 155.155.155.100
DocumentRoot /www/155.155.155.100
</VirtualHost>

<VirtualHost 155.155.155.100:80>
ServerName www.domain0.com
DocumentRoot /www/domain0.com
</VirtualHost>

<VirtualHost 155.155.155.101:80>
ServerName 155.155.155.101
DocumentRoot /www/155.155.155.101
</VirtualHost>

<VirtualHost 155.155.155.101:80>
ServerName www.domain1.com
DocumentRoot /www/domain1.com
</VirtualHost>

私が知る限り、あなたの間違いは最初の仮想ホストにServerNameを与えなかったことでした。

Apacheは、リクエストを受信したIPの逆を使用しました。これはwww.domain1.comであると私は予想しています。したがって、2番目の仮想ホストは非表示になりました。

1
Tobu

問題は、最初のIPのみのスタンザです。

<VirtualHost 155.155.155.101>
    DocumentRoot /www/155.155.155.101
</VirtualHost>

ServerNameまたはServerAliasは含まれませんが、ドメインでそれに続くものは含まれます。 Apacheは、着信接続を、一致する最初のVirtualHost構成スタンザに一致させようとします。 IPに解決されるドメインを使用する接続は、それ以上の改良(ServerNameまたはServerAlias)なしでIPと一致するため、接続の処理に使用されます。

したがって、各VirtualHost構成スタンザにServerNameまたはServerAliasオプションとDocumentRootがあることを確認するか、より具体的なVirtualHost構成スタンザが構成ファイルの最初に表示されてから特定性の低いもの(つまり、IPアドレス自体)が表示されるようにする必要があります。またはServerNameオプションなし。

したがって、以下は期待どおりに機能するはずです。

NameVirtualHost 155.155.155.100
NameVirtualHost 155.155.155.101
NameVirtualHost 155.155.155.102
NameVirtualHost 155.155.155.103

<VirtualHost 155.155.155.101>
    ServerName www.domain1.com
    ServerAlias www.domain1.com
    DocumentRoot /www/domain1.com
</VirtualHost>

<VirtualHost 155.155.155.101>
    DocumentRoot /www/155.155.155.101
</VirtualHost>
0
Jeremy Bouse