静的ファイルとWebアプリケーションの両方を提供するApache

静的ファイルとWebアプリケーションの両方を提供するApache

Java Webアプリケーションコンテンツを提供するために、以下のリバースプロキシ設定でApacheを実行しています。

<VirtualHost *:80>
SSLProxyEngine on
ProxyPreserveHost On
ProxyRequests Off

ServerName www.example.com
ServerAlias example.com

<Location />
        Order deny,allow
        Allow from all
        SetOutputFilter INFLATE;DEFLATE

        ProxyPass  http://localhost:7070/
        ProxyPassReverse  http://localhost:7070/
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</Location>

</VirtualHost>

今、静的ファイルフォルダを追加し、同じドメイン名で「/auth」パスの下で提供されるようにしたいです https://example.com/auth

そこで上記の設定のすぐ下に以下の設定を追加しました

<Location /auth>
      Require all granted
      Allow from all
</Location>

Alias "/auth" "/var/www/html/auth"
DocumentRoot /var/www/html/auth/
<Directory /var/www/html/auth>
        Require all granted
        DirectoryIndex index.html
</Directory>

しかし、「https://example.com/auth」を試しても、Java Webアプリケーションにアクセスし、404が返されます。しかし、localhostでcurlすると、Webページのコンテンツが表示されます。

curl http://localhost

/var/www/html/auth/の静的コンテンツにアクセスする方法 https://example.com/authメールアドレス

答え1

ディレクティブを使用して、プロキシからその場所を明示的に削除する必要がありますProxyPass "!"。これは、プロキシする必要のない場所で実行する必要がありますLocation。このブロックは次のように記述する必要があります。プロキシ ブロックは次のようになります。

<Location />
  ProxyPass http://localhost:7070/
  (...)
</Location>

<Location /auth>
  ProxyPass "!"
</Location>

関連情報