I'm attempting to setup a reverse proxy using Apache on my local machine, I have the following in my httpd.conf:
ProxyPass /app http://x.com
ProxyPassReverse /app http://x.com
Everything works great and browsing to 127.0.0.1/app/* works as expected. The problem arises when I browse to a url that performs a redirect to a resource at the same hostname but a different port. Initially I thought I could handle this situation as follows:
ProxyPass /app:81 http://x.com:81
ProxyPassReverse /app:81 http://x.com:81
But whilst this works, cookies don't appear to carry across the redirect. How would I get cookies to carry across the redirect? Also whilst the port is actually known in advance, is there a more robust method of handling this such that a redirect to any arbitrary port is handled correctly?
Well, you could kind of use "port" numbers in the path just don't use ":"'s.
Assuming your site is ht+p://y.com:
y.com/app --> x.com
y.com/app81 --> x.com:81
I prefer using names of the applications on the backend. In fact, you may have many different application servers but want all web requests to look like they came from the same spot:
y.com/games --> x.com:8080/games
y.com/finance --> f.com:7000/money
y.com/movies --> m.com:8001/cinema
You can't have a port specification on
ProxyPass /app:81
- instead, the port to listen on should be determined by theVirtualHost
block that theProxyPass
resides in.Create a second
VirtualHost
set to port 81, then place aProxyPass /app http://x.com:81
inside of it to get the behavior you're looking for.Cookies aren't necessarily shared across different port numbers. This is because of ill-defined browser behaviour, not your reverse proxy configuration.
I suggest you stick with port 80 (or 443) for the front-end and use different URL paths instead of different port numbers.