Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I'd like to configure apache so that serves a Python webapp running in CherryPy on a backend server.

Here's what's in the vhost:

    RewriteRule ^/myapp/?(.*) http://backend-server:8000/$1 [P]
    ProxyPassReverse /myapp/ http://backend-server:8000/

When I trace the request/response, I see:

GET /myapp HTTP/1.1

And then:

HTTP/1.1 303 See Other
Date: Thu, 15 Sep 2011 21:46:35 GMT
Server: CherryPy/3.1.2
Content-Type: text/html;charset=utf-8

As you can see, the CherryPy webapp sends a 303 redirect to /somewhere-else/

Any ideas why the Apache ProxyPassReverse doesn't transform the Location to

share|improve this question

1 Answer 1

Your source location is /myapp, while your ProxyPassReverse is for /myapp/; context of the proxied location doesn't match, so the ProxyPassReverse doesn't apply.

Why the mod_rewrite proxy? This should accomplish the same, and have no trailing slash consistency issues:

ProxyPass /myapp http://backend-server:8000
ProxyPassReverse /myapp http://backend-server:8000
share|improve this answer
Thanks much for the reply. I tried your suggestion, but, unfortunately, I'm seeing the same response. Perhaps I'm missing some other Apache directive? I'll keep digging.... – Dave Paroulek Sep 15 '11 at 23:41
@Dave CherryPy might be getting sensitive about the Host: header - try adding ProxyPreserveHost on. Still, Apache should catch and translate that redirect, unless it doesn't think it should; is there anything different about the new URL versus the old? Host name (is there a www?), port, protocol - any difference in these things to the original request will cause Apache to leave the Location: header alone. – Shane Madden Sep 16 '11 at 0:47

Your Answer


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.