nginx add trailing slash with wrong port

Francis Daly francis at
Wed May 28 23:00:24 UTC 2014

On Sat, May 24, 2014 at 02:53:21PM -0400, luc2 wrote:

Hi there,

> nginx rewrites :
> > http://localhost:8081/files
> to :
> > http://localhost:81/files/ # wrong port !
> is it possible to configure nginx to behave like apache ?


If your use case is restricted to one of the two mentioned below, then
you might be able to fake it adequately.

nginx does not have a config option to do what you seem to want, which
is "use the incoming http Host: header value in any generated Location:
response header".

Using "port_in_redirect", you can auto-include either no port at all,
or whichever port the connection actually came to nginx on (which will
be one of the ports listed or implied in the "listen" directives).

If you don't want to patch the code to add your use case, then

* if you have a fixed list of redirections, you could add a number of
locations of the form

  location = /dir1 { return 301 $scheme://$http_host/dir1/; }

* or if there is exactly one host/port that you will always want to return
(e.g. server:8081), then you could

  port_in_redirect off;
  server_name_in_redirect on;
  server_name server:8081;

But otherwise, I don't think it can be done.

Francis Daly        francis at

More information about the nginx mailing list