6

I have a reverse proxy setup using apache mod_proxy:

<VirtualHost *:443>
   ServerName reverse.server.com  
   ProxyPass / http://10.1.9.11:3000/
   ProxyPassReverse / http://10.1.9.11:3000/
   ProxyPreserveHost on
   ...snip ssl stuff...
</VirtualHost>

This works fine most of the time. The problem is when the internal server does a redirect. While the proxypassreverse should catch the location, and it seems to, it redirects to http://reverse.server.com rather than to https://reverse.server.com. So it is half working, the address changes correctly, but the protocol stays as the internal server.

I am not clear on why it is doing this, as the proxied connection is SSL - any ideas?

2 Answers 2

8

ProxyPassReverse can not fix this kind of redirections. There are 2 ways to solve the problem:

  • Use HTTPS for the internal site. e.g. ProxyPass / https:... and ProxyPassReverse / https: (actually the last one is not required in your case).
  • Use mod_headers in the reverse proxy: Header edit Location ^http: https:
  • Use mod_rewrite in the reverse proxy to change the redirection.
3
  • Ah, so this would send http to the browser, I would need to accept http inbound and change to https? Currently this server is only listening on 443. Is there another way?
    – Paul
    May 14, 2012 at 22:12
  • Yes, to use HTTPS internally. May 15, 2012 at 19:20
  • 1
    Thank you so much :) using Header edit solved it for me. This had been driving me mad! May 8, 2020 at 1:43
0

I'm just experiencing the same issue. We found 2 ideas to try, dont know if it really works: 1/ use the RequestHeader set X-Forwarded-Protocol "https" => http://toroid.org/ams/etc/mixing-http-and-https

2/ use the variable httpsindicatorheader (it's a websphere) to indicate through the application server that the initial request was https. Then every redirection will be on https

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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