port_in_redirect not working?
nginx at nginxuser.net
Mon Nov 7 19:44:43 UTC 2011
On 7 November 2011 21:25, olan <nginx-forum at nginx.us> wrote:
> Hi Maxim, thanks for getting back to me.
> I've enabled debugging and the output is here:
> http://pastebin.com/Dmw2nJMY. I've cleared all caches and restarted
> varnish, nginx and php5-fpm and mysql.
Line 245 of your debug shows the issue. php is sending a header - http
fastcgi header: "Location: http://XXX.XXX.XXX.XXX:8080/". The
proxy_redirect directive handles this for proxy_pass setups but there
isn't an equivalent for fastcgi.
You can try tricking php by putting $_SERVER["SERVER_PORT"] right at
the top of your index php (or use autoprepend in php.ini so it applies
to all php files).
I just had a problem with this with a proxy setup as the
proxy_redirect only accepts variables in the redirect part such that I
had to do ....
proxy_redirect http://example-1.com:8080/ http://example-1.com/;
proxy_redirect http://example-2.com:8080/ http://example-2.com/;
proxy_redirect http://example-3.com:8080/ http://example-3.com/;
proxy_redirect http://example-n.com:8080/ http://example-n.com/;
If the directive accepted variables in the original uri part, a single line ...
proxy_redirect http://$host:8080/ http://$host/;
... would have done the job and given flexibility. I have to remember
to add every domain I create to the list.
Anyway, I digress. Try the trick on PHP. Nothing can be done in Nginx
until a fastcgi_redirect directive is introduced.
More information about the nginx