Having an issue with Apache front server connecting to a Jetty application server.
I thought that ProxyPass !
in a location block was supposed to NOT pass on processing to the application server, but for some reason that is not happening in my case, Jetty shows a 404 on the missing statics (js, css, etc.)
Here's my Apache (v 2.4, BTW) virtual host block:
DocumentRoot /path/to/foo
ServerName foo.com
ServerAdmin [email protected]
RewriteEngine On
<Directory /path/to/foo>
AllowOverride None
Require all granted
</Directory>
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
# don't pass through requests for statics (image,js,css, etc.)
<Location /static/>
ProxyPass !
</Location>
<Location />
ProxyPass http://localhost:8081/
ProxyPassReverse http://localhost:8081/
SetEnv proxy-sendchunks 1
</Location>
You need to use the ProxyPass ! argument with a path, not in a
<Location>
block, for example:I believe these rules are processed in the order they appear in the config, so be sure to specify exclude rules first.
The way to make it work inside
Location
blocks is to reverse the order, i.e. have the most specificLocation
statement last:This works. See https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass for more details - it contains an example pretty much exactly as the above.