J'essaie d'exécuter plusieurs conteneurs Docker exécutant tous l'écoute nginx sur le port 80, mais avec différents ports hôte mappant sur le port 80 des conteneurs.
Pour la plupart, cela fonctionne, sauf lorsque nginx effectue une redirection en raison de l'absence d'une barre oblique de fin.
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
Étant donné la configuration nginx ci-dessus et un conteneur docker l'exécutant avec le port hôte 8080 mappé sur le port conteneur 80, je peux obtenir 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 ...
mais si je demande localhost: 8080 / docs, je reçois une redirection vers 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 ...
Comment puis-je obtenir nginx pour conserver le port d'origine lors de la redirection? J'ai essayé de regarder port_in_redirect et server_name_in_redirect mais ils n'ont pas aidé.
ÉDITER
Basé sur https://forum.nginx.org/read.php?2,261216,261216#msg-261216, cela ne semble pas possible pour le moment.