Saya mencoba menjalankan beberapa container docker yang semuanya menjalankan nginx mendengarkan pada port 80, tetapi dengan pemetaan host port yang berbeda ke port container 80.
Sebagian besar ini berfungsi, kecuali ketika nginx melakukan redirect karena tidak ada garis miring.
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
Dengan konfigurasi nginx di atas dan sebuah docker container yang menjalankannya dengan port host 8080 yang dipetakan ke port container 80, saya bisa mendapatkan 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 ...
tetapi jika saya meminta localhost: 8080 / docs saya mendapatkan redirect ke 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 ...
Bagaimana saya bisa mendapatkan nginx untuk mempertahankan port asli saat melakukan pengalihan? Saya sudah mencoba melihat port_in_redirect dan server_name_in_redirect tetapi mereka tidak membantu.
EDIT
Berdasarkan https://forum.nginx.org/read.php?2,261216,261216#msg-261216 ini tidak terlihat mungkin saat ini.