HTTP-клиенты поместят порт в заголовок хоста. Если вы используете исходное значение заголовка узла при выполнении перенаправления, оно должно работать так, как ожидалось. Я протестировал следующий код и, похоже, делаю именно то, что вы просили:
location ~ ^.*[^/]$ { try_files $uri @rewrite;}location @rewrite { return 302 $scheme://$http_host$uri/;}
> GET /bla HTTP/1.1> User-Agent: curl/7.29.0> Host: localhost:8080> Accept: */*>< HTTP/1.1 302 Moved Temporarily< Server: nginx/1.9.7< Date: Sun, 29 Nov 2015 06:23:35 GMT< Content-Type: text/html< Content-Length: 160< Connection: keep-alive< Location: http://localhost:8080/bla/