Proxy_redirect and variables

Hi

Why doesn’t proxy_redirect interpolate variables in its first argument?

I’m trying to setup a reverse proxy to a backend that uses name-based
virtual hosts, so I need to change both the incoming Host header and the
outgoing Location headers:

server {
server_name public.hostname.com;

set $proxy_to private.hostname.com

location / {
    proxy_pass http://backend;
    proxy_redirect http://$proxy_to/ http://$host/;
    proxy_set_header Host $proxy_to;
}

}

This doesn’t work, unless I expand $proxy_to in proxy_redirect by hand.

Am I supposed to write it in another way?

I’m using 0.8.32 on Linux amd64.

Tobia

Hello

Does anybody know anything about this?

Hello!

On Mon, Mar 29, 2010 at 05:30:19PM +0200, Tobia C. wrote:

Does anybody know anything about this?

Yes.

Does anybody know why proxy_redirect won’t interpolate variables in its first argument?

Because it doesn’t. If you think you are brave enough to change
it - submit patches.

   proxy_pass http://backend;
   proxy_redirect http://$proxy_to/ http://$host/;
   proxy_set_header Host $proxy_to;

}
}

This doesn’t work, unless I expand $proxy_to in proxy_redirect
by hand.

Am I supposed to write it in another way?

For the above config you shouldn’t use variables at all, use
literal strings instead (and/or some config generator if you want
to save typing). Variables are evaluated at run time and should
be used only when they have to be different for different
requests.

Maxim D.