Reverse proxy from HTTPS to HTTP from an unknown source location

alex.sherwin nginx-forum at
Fri Jul 22 20:43:06 UTC 2011

I've searched these forums and the internet and haven't found anyone
asking/answering this particular question.  Hopefully I'm just missing
something obvious in the configuration options that make this easy..

I've got a configuration where nginx will listen on both HTTP and HTTPS,
and reverse proxy to a back-end server over only HTTP.  This is a pretty
simple configuration, however, with the HTTPS connection, the back-end
server returns Location: headers with HTTP (instead of HTTPS) which need
to be fixed.  I do this like so:

location / {
  proxy_pass http://mybackendserver:8080;
  proxy_redirect https://$host:$server_port/;

This works when I know the host that will be returned to match (ex:
""), however, our target environment is a private
network where clients each NAT their own IP's and internal DNS to access
this site over HTTPS.  

In this environment, if a client DNS'd their route to our server as, I presume the return Location:
header would be "Location:", while I need to rewrite
it to use HTTPS as "Location:".

Based on the documentation and experimation, it does not appear I can
use any kind of variable or wildcard matching int he first portion of
the proxy_redirect configuration option.

Is there another way to accomplish this?  The end goal is to reverse
proxy from HTTPS to a back-end HTTP server, and fix the Location:
headers on the responses to be HTTPS (as they should be, since the
client accessed the site over HTTPS).

I'm not opposed to changing the way I reverse proxy if that's causing
the problem.


Posted at Nginx Forum:,212823,212823#msg-212823

More information about the nginx mailing list