web-dev-qa-db-ja.com

Apache Locationディレクティブを特定のサブドメインに制限するにはどうすればよいですか?

サーバーwww.example.comでは、 <Location> ディレクティブを使用して、トラフィックをバックエンドサーバーにプロキシします。

<Location /app1>
  ProxyPass http://192.168.1.20
</Location>

次に、uat.example.comの同じIPアドレスを指すサブドメインwww.example.comを追加しました。開発中のアプリをテストするためのクライアントのプロキシとして使用したいと思います。うまくいけば、クライアントは次の方法でアクセスできます。

http://uat.example.com/app2_uat

ここで、場所を追加すると、次のようになります。

<Location /app2_uat>
  ProxyPass http://192.168.1.30
</Location>

クライアントは次の両方にアクセスできます。

http://www.example.com/app2_uat
http://uat.example.com/app2_uat

次のように場所を制限するにはどうすればよいですか。

http://uat.example.com/app2_uat

アクセスできますか? (つまり、http://www.example.com/app2_uatにアクセスできないようにする必要があります。)

1
ohho

ApacheでNameVirtualHostオプションを使用すると、これは簡単に実行できます。私は ここで別のユーザーに提供された詳細な回答 を持っています。基本的な概念は、サブドメインごとに2つの異なるVirtualHost構成を作成することです。これを行うと、両方のサブドメインの構成をカスタマイズして、探している粒度を実現できます。

編集:元の投稿者固有の質問の詳細のNameVirtualHostを設定する方法に詳細を追加します:

一般に、最初に必要なポートに対してNameVirtualHostをアクティブ化する必要があります。ポート80を使用すると想定しているので、Apache構成でこの行を見つけます(/etc/Apache2/ports.confにある可能性があります)。次のように設定します。

NameVirtualHost *:80

Apacheの設定(チャンスは上記と同じ/etc/Apache2/ports.conf)がポート80にリストされるように設定されていることを確認してください。これは事実ですが、参照用にここに追加します。

Listen 80

ここで魔法が起こります。繰り返しになりますが、私は必要最低限​​の基本を行っているだけなので、サーバーの設定に合わせて調整してください。これはwww.example.com用です:

<VirtualHost *:80>
  ServerName www.example.com
  ServerAlias www.example.com

  <Location /app1>
    ProxyPass http://192.168.1.20
  </Location>

</VirtualHost>

そして今、uat.example.comのために、次のような新しい構成を作成します。

<VirtualHost *:80>
  ServerName uat.example.com
  ServerAlias uat.example.com

  <Location /app2_uat>
    ProxyPass http://192.168.1.30
  </Location>

</VirtualHost>

NameVirtualHostを使用すると、1つのIPアドレスに関連付けられた2つの個別のドメイン構成をセットアップできます。繰り返しになりますが、詳細については、上記でリンクした回答を確認してください。

1
JakeGould