Estoy tratando de ejecutar múltiples contenedores acoplables, todos ejecutando nginx escuchando en el puerto 80, pero con diferentes puertos de host asignados al puerto de contenedores 80.
En su mayor parte, esto funciona, excepto cuando nginx realiza una redirección debido a la falta de una barra diagonal final.
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
Dada la configuración nginx anterior y un contenedor docker ejecutándolo con el puerto host 8080 asignado al puerto 80 del contenedor, puedo obtener localhost: 8080 / docs / via curl ok:
> GET /docs/ HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 200 OK
* Server nginx/1.9.5 is not blacklisted
< Server: nginx/1.9.5
< Date: Sat, 28 Nov 2015 17:27:05 GMT
< Content-Type: text/html
< Content-Length: 6431
< Last-Modified: Sat, 28 Nov 2015 17:17:06 GMT
< Connection: keep-alive
< ETag: "5659e192-191f"
< Accept-Ranges: bytes
<
... html page ...
pero si solicito localhost: 8080 / docs obtengo una redirección a localhost / docs /
> GET /docs HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:8080
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
* Server nginx/1.9.5 is not blacklisted
< Server: nginx/1.9.5
< Date: Sat, 28 Nov 2015 17:29:40 GMT
< Content-Type: text/html
< Content-Length: 184
< Location: http://localhost/docs/
< Connection: keep-alive
<
... html redirect page ...
¿Cómo puedo obtener nginx para preservar el puerto original al hacer la redirección? Intenté mirar port_in_redirect y server_name_in_redirect pero no me ayudaron.
EDITAR
Basado en https://forum.nginx.org/read.php?2,261216,261216#msg-261216, esto no parece posible en este momento.