Apache-2.4

Apache 同時提供靜態文件和 webapp

  • January 7, 2021

我在反向代理配置下執行 apache 來提供 java webapp 內容

<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 webapp 並給我 404。但是當我 curl localhost 我可以看到網頁內容

curl http://localhost

如何使用 https://example.com/auth URL訪問 /var/www/html/auth/ 上的靜態內容

您需要使用該ProxyPass "!"指令從代理中顯式刪除該位置。這應該在Location你不需要被代理的地方完成,並且這個塊應該寫代理塊之後,像這樣:

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

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

引用自:https://serverfault.com/questions/1048965