Take the 2-minute tour ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

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 webmaster@foo.com

  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>
share|improve this question

1 Answer 1

up vote 6 down vote accepted

You need to use the ProxyPass ! argument with a path, not in a <Location> block, for example:

ProxyPass /static !
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/

I believe these rules are processed in the order they appear in the config, so be sure to specify exclude rules first.

share|improve this answer
    
I need to check this, but Apache 2.4 docs indicate that <Location />ProxyPass</Location> is the preferred/performant approach to proxying. I tried, BTW, ProxyPass /static ! outside of Location block and same deal, Jetty tries to serve it –  virtualeyes Apr 15 '12 at 16:35
1  
+1, you are, however, correct in that breaking all the proxy rules outside of Location blocks does the trick ;-) Now, I would like to get this working in Location blocks since the I recall the 2.4 docs saying this is the way to do it now for max performance... –  virtualeyes Apr 15 '12 at 16:38
1  
ok, in 2.4 docs they state that multiple proxy directives outside a location block can be a performance bottleneck; however, given that I'll have a handful at most, a non-issue. Location blocks would work, BTW, if I had a more specific directive than <Location /> for the catch all. Appears that after <Location /static/> is processed, it moves on to <Location /> and proxies the /static/foo/bar.css file to Jetty, ignoring the first directive... –  virtualeyes Apr 15 '12 at 17:17
    
So is this possible in Apache 2.4.10 using Location blocks? –  fideloper Aug 19 at 19:18

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.