Tôi đang cố gắng chạy nhiều container docker tất cả đang chạy nginx nghe trên cổng 80, nhưng với các cổng máy chủ khác nhau ánh xạ tới cổng container 80.
Đối với hầu hết các phần này hoạt động, ngoại trừ khi nginx thực hiện chuyển hướng do thiếu dấu gạch chéo.
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
Với cấu hình nginx ở trên và một container docker chạy nó với cổng máy chủ 8080 được ánh xạ tới cổng container 80 Tôi có thể nhận localhost: 8080 / docs / qua 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 ...
nhưng nếu tôi yêu cầu localhost: 8080 / docs tôi sẽ chuyển hướng đến 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 ...
Làm cách nào tôi có thể lấy nginx để bảo vệ cổng ban đầu khi thực hiện chuyển hướng? Tôi đã thử xem port_in_redirect và server_name_in_redirect nhưng họ không giúp được gì.
BIÊN TẬP
Dựa trên https://forum.nginx.org/read.php?2,261216,261216#msg-261216 điều này hiện không thể thực hiện được.