Sto cercando di eseguire più contenitori docker che eseguono tutti nginx in ascolto sulla porta 80, ma con diverse porte host associate alla porta 80 dei contenitori.
Per la maggior parte funziona, tranne quando nginx esegue un reindirizzamento a causa della mancanza di una barra finale.
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
Data la precedente configurazione nginx e un contenitore docker che lo esegue con la porta host 8080 mappata sulla porta contenitore 80, posso ottenere 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 ...
ma se richiedo localhost: 8080 / docs ottengo un reindirizzamento 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 ...
Come posso ottenere nginx per preservare la porta originale quando eseguo il reindirizzamento? Ho provato a guardare port_in_redirect e server_name_in_redirect ma non mi hanno aiutato.
MODIFICARE
Basato su https://forum.nginx.org/read.php?2,261216,261216#msg-261216 questo non sembra possibile al momento.