web-dev-qa-db-ja.com

条件付きProxyPassを作成する方法は?

サイトで利用可能な.confファイルの1つに次の設定があります。
blog.example.comを押すと、ghostブログをロードするように設定されます。
なんらかの原因でexample.comもブログを提供しています。しかし、それでも結構です。

<Virtualhost *:80>
  ServerName blog.example.com
  ServerAdmin [email protected]
  ProxyPass        /  http://localhost:2368/
  ProxyPassReverse /  http://localhost:2368/
</Virtualhost>

phpmyadminをインストールしたところ、http://example.com/phpmyadminでアクセスできないことに気付きました。そのページにアクセスすると、代わりにゴーストの404ページが見つかりません。

だから私はいくつかの条件付きのProxyPassを無視する必要があると思います/phpmyadmin
以下も試してみましたがうまくいきません。

<Virtualhost *:80>
  ServerName blog.example.com
  ServerAdmin [email protected]
  ProxyPass        /phpmyadmin  http://localhost/phpmyadmin
  ProxyPassReverse /phpmyadmin  http://localhost/phpmyadmin
  ProxyPass        /  http://localhost:2368/
  ProxyPassReverse /  http://localhost:2368/
</Virtualhost>

Apacheがハングするだけで、http://example.com/phpmyadminを押したら再起動する必要があります。

更新

以下を試してみたところ、phpmyadminログインページが表示されました。 localhostの後に:80を追加しました。 *ではなく、仮想ホストの特定のドメイン名を指定します。

<Virtualhost blog.example.com:80>
  ServerName blog.example.com
  ServerAdmin [email protected]
  ProxyPass        /phpmyadmin  http://localhost:80/phpmyadmin
  ProxyPassReverse /phpmyadmin  http://localhost:80/phpmyadmin
  ProxyPass        /  http://localhost:2368/
  ProxyPassReverse /  http://localhost:2368/
</Virtualhost>

問題は、代わりにhttp://localhost/phpmyadmin/index.php?token=8fa78a71a166399749b58cd3cb66b7f2にリダイレクトすることです。おそらくphpmyadminを使った設定だと思います。

5
resting

!ターゲットを使用して、場所がプロキシされるのを防ぐことができます。

<Virtualhost *:80>
  DocumentRoot     /path/to/parent/of/phpmyadmin
  ProxyPass        /phpmyadmin !
  ProxyPass        /  http://localhost:2368/
  ProxyPassReverse /  http://localhost:2368/
</Virtualhost>

これにより、phpmyadminへのリクエストを除くすべてのリクエストがlocalhost:2368にプロキシされます。

もちろん、ドキュメントルートを設定する必要があります。そうしないと、phpmyadminが見つかりません。

6