web-dev-qa-db-ja.com

virtualhost proxypassからエイリアスを除外します

私は仮想ホストの設定に従っています。望ましい結果は次のとおりです。

  1. 誰かが http://test.myserver.com/myapp をリクエストした場合、Apacheは/ var/www/myappからサービスを提供します
  2. http://test.myserver.com/ が要求された場合、Apacheはそれをポート8069にリダイレクトします。

2番目は機能していますが、1番目は機能していません。誰かが助けてくれますか?

<VirtualHost *:80>
        ServerName test.myserver.com

        Alias /myapp /var/www/myapp
        <Directory /var/www/myapp>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

        ProxyPass / http://localhost:8069/
        ProxyPassReverse / http://localhost:8069/

</VirtualHost>
24
user2436428

これは私が望ましい結果を達成することができた方法です。以下は、ProxyPassMatch ^/myapp !トリックを実行し、(server-address)/ myappを除いて、すべての要求がポート8069でopen-erpを実行している他のサーバーにプロキシされています。

<VirtualHost *:80>
        ServerName test.myserver.com

        Alias /myapp /var/www/myapp
        <Directory /var/www/myapp>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>

        ProxyPassMatch ^/myapp !
        ProxyPass / http://localhost:8069/
        ProxyPassReverse / http://localhost:8069/


  CustomLog /var/log/Apache2/access.log common
  ErrorLog /var/log/Apache2/error.log

</VirtualHost>
43
user2436428

代わりに:ProxyPassMatch ^/myapp !次のように、/を定義する前に別のProxyPassディレクティブを追加するだけで済みます。

ProxyPass /myapp !
ProxyPass / http://localhost:8069/

ProxyPassは優先順位を尊重するため(最初の一致が処理されます)、プロキシの代わりにディレクトリに正しくリダイレ​​クトされます。

18
Geoff Martin

RewriteCond(プロキシを実行している場合は非常に可能性があります)がある場合は、これでも幸せになります!

<Location /.well-known/acme-challenge/>
  RewriteEngine off
  ProxyPass !
</Location>
1
simUser