ฉันกำลังพยายามเรียกใช้คอนเทนเนอร์นักเทียบท่าหลายตัวที่กำลังเรียกใช้ nginx ฟังพอร์ต 80 แต่ด้วยการจับคู่โฮสต์พอร์ตที่แตกต่างกับพอร์ตคอนเทนเนอร์ 80
ส่วนใหญ่ใช้งานได้ยกเว้นเมื่อ nginx ทำการเปลี่ยนเส้นทางเนื่องจากไม่มีเครื่องหมายสแลชต่อท้าย
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
ได้รับการกำหนดค่า nginx ข้างต้นและภาชนะนักเทียบท่าที่ใช้กับพอร์ตโฮสต์ 8080 แมปไปยังพอร์ตคอนเทนเนอร์ 80 ฉันจะได้รับ localhost: 8080 / docs / ผ่าน 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 ...
แต่ถ้าฉันขอ localhost: 8080 / เอกสารฉันได้รับการเปลี่ยนเส้นทางไปยัง 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 ...
ฉันจะรับ nginx เพื่อรักษาพอร์ตเดิมเมื่อทำการเปลี่ยนเส้นทางได้อย่างไร ฉันลองดูที่ port_in_redirect และ server_name_in_redirect แต่พวกเขาไม่ได้ช่วย
แก้ไข
อ้างอิงจากhttps://forum.nginx.org/read.php?2,261216,261216#msg-261216สิ่งนี้ดูไม่เป็นไปได้ในตอนนี้