Apache 为静态文件和 webapp 服务器提供服务
Apache to server both static file and webapp
我在下面的反向代理配置上有 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>
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 http://localhost
如何使用 https://example.com/auth URL
访问 /var/www/html/auth/ 上的静态内容
我不确定你在使用“位置”来匹配整个文档根目录,因为你将所有内容都传递给了 proxypass:恕我直言,你可以完全删除这两行(“”和“/”) .
要从 proxypass 中排除路径,您可以使用“!” (文档:https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypass)。如果您不想更改配置,下面的示例应该有效:
<Location "/main-dir/sub-dir/">
ProxyPass "http://backend.example.com/"
</Location>
<Location "/main-dir/sub-dir/static-content">
ProxyPass "!"
</Location>
我在下面的反向代理配置上有 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>
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 http://localhost
如何使用 https://example.com/auth URL
访问 /var/www/html/auth/ 上的静态内容我不确定你在使用“位置”来匹配整个文档根目录,因为你将所有内容都传递给了 proxypass:恕我直言,你可以完全删除这两行(“”和“/”) .
要从 proxypass 中排除路径,您可以使用“!” (文档:https://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypass)。如果您不想更改配置,下面的示例应该有效:
<Location "/main-dir/sub-dir/">
ProxyPass "http://backend.example.com/"
</Location>
<Location "/main-dir/sub-dir/static-content">
ProxyPass "!"
</Location>