포트 80에서 수신 대기하는 nginx를 실행하는 여러 도커 컨테이너를 실행하려고하지만 컨테이너 포트 80에 다른 호스트 포트가 매핑되어 있습니다.
후행 슬래시가 없어서 nginx가 경로 재 지정을 수행하는 경우를 제외하고 대부분의 경우에 작동합니다.
server {
listen 80;
root /var/www;
index index.html;
location /docs {}
}
위의 nginx 구성과 컨테이너 포트 80에 매핑 된 호스트 포트 8080으로 실행하는 도커 컨테이너를 고려하면 curl ok를 통해 localhost : 8080 / docs /를 얻을 수 있습니다.
> 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 / docs를 요청하면 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 이 지금 할 수있는 권리를 보이지 않는다.