How to proxy context to different backend context in apache
Solution 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
Solution 2
I had same problem and fix it as follow:
For some reason both context path must be the same so, I mod my application context path to be the equal (note extra "/" on passResever)
ProxyPass /jira http://192.168.1.30:8080/jira
ProxyPassReverse /jira/ http://192.168.1.30:8080/jira
Related videos on Youtube
Toff'
My Blog - www.upgradingdave.com JavaJing (My Java Tutorial Site)
Updated on September 18, 2022Comments
-
Toff' almost 2 years
I'd like to configure apache so that http://my-domain.com/myapp 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 Host: my-domain.com
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 Location: http://my-domain.com/somwhere-else/
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
http://my-domain.com/myapp/somewhere-else
? -
ravi yarlagadda almost 13 years@Dave CherryPy might be getting sensitive about the
Host:
header - try addingProxyPreserveHost 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 awww
?), port, protocol - any difference in these things to the original request will cause Apache to leave theLocation:
header alone.