web-dev-qa-db-ja.com

ポート443のApacheNameVirtualHostはServerAliasを無視します

ホスト「Apple.fruitdomain」でのリクエストがApple-appにプロキシされ、ホスト「orange.fruitdomain」でのリクエストがorange-appにプロキシされるように、ポート443に名前ベースの仮想ホストセットアップがあります。これは機能していますが、ホスト「Apple」でのリクエストがApple-appにプロキシされ、ホスト「orange」でのリクエストがorange-appにプロキシされるように、それぞれにServerAliasを追加したいと思います。単にServerAliasディレクティブを仮想ホストに追加すると、機能しません。以下のssl.conf:

Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
ServerName Apple.fruitdomain
ServerAlias Apple
SSLProxyEngine on
ProxyPass /Apple-app https://localhost:8181/Apple-app
ProxyPassReverse /Apple-app https://localhost:8181/Apple-app
...
</VirtualHost>
<VirtualHost *:443>
ServerName orange.fruitdomain
ServerAlias orange
SSLProxyEngine on
ProxyPass /orange-app https://localhost:8181/orange-app
ProxyPassReverse /orange-app https://localhost:8181/orange-app
...
</VirtualHost>

興味深いことに、ポート80で同様の設定を行うと、ServerAliasが機能します...

6
Ryan

私のテストから、Apache 2.2.15のポート443で名前ベースの仮想ホスティングを使用する場合、ServerAliasディレクティブは無視されるようです。これはおそらく、特別なSNIプロトコル要件( SNI-Wikipedia ; SNI-Apache Wiki )によるものです。回避策は、2つの別個の仮想ホストを作成することです。私の例では、1つはServerName orange.fruitdomainを持ち、もう1つはServerNameorangeを持ちます。

6
Ryan

下線付きの構成を修正するには、以下を使用して「デフォルト」の目的で別のVirtualHostを作成する必要があります。

    ServerName localhost
or
    ServerName your_server_name

Apache httpd docs(例)を確認してください http://httpd.Apache.org/docs/2.2/mod/core.html#servername

ServerNameディレクティブは、サーバーがそれ自体を識別するために使用する要求スキーム、ホスト名、およびポートを設定します。これは、リダイレクトURLを作成するときに使用されます。さらに、名前ベースの仮想ホストを使用する場合、ServerNameを使用して(おそらくServerAliasと組み合わせて)仮想ホストを一意に識別します。

0
myset