2017-01-27 1 views
2

80에서 수신 대기중인 Nginx 서버가 Docker 컨테이너에서 실행되었습니다.Nginx : 리디렉션 중 포트 유지

Nginx 구성 내에서 특정 상황에서 정적 페이지로 리디렉션을 수행해야합니다.

rewrite^/foobar.html redirect; 

사용자는 고정 표시기 명령 줄을 사용하여 모든 포트를 지정 컨테이너를 실행할 수 있습니다 (참조를 위해, 그녀는 포트 8000에 컨테이너를 노출 할 수 있습니다 내부적으로 Nginx에 여전히 80를 사용합니다).

이제 Nginx가 URL을 리디렉션하면 Docker에서 사용하는 포트 대신 Nginx에서 내부적으로으로 사용 된 포트로 대체됩니다.

나는 헤더의 무리를 설정하려하지만 도움이되지 않았다 :

proxy_set_header X-Forwarded-Host $host:$server_port; 
proxy_set_header X-Forwarded-Server $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_pass http://app_server; 

rewrite^/foobar.html redirect; 

그것은 여전히 ​​80로 리디렉션합니다.

어떻게 사용자가 사용하는 포트를 유지하도록 Nginx에 지시 할 수 있습니까?

답변

4

그래서, 나는 해결책을 발견 다음과 같이 내가 리디렉션을 지정할 수 있습니다

rewrite^$scheme://$http_host/foobar.html redirect; 

이 포트를 보존하는 것입니다.