Kotlin에서 Vertx 3을 사용하고 있으며 때때로 같은 URL이 아닌 공개 URL의 관점에서 특정 URI를 반환해야합니다. Vertx-web 요청이 내 URL로 생각하는 것입니다. 이는 내로드 밸런서 또는 프록시가 하나의 URL을 수신 한 다음 내부 URL에서 내 애플리케이션으로 전달한 것이 원인 일 수 있습니다.Vertx 요청을 받았고 외부에서 볼 수있는 공개 URL을 계산해야합니다.
내가 이렇게 그래서 경우 :
val publicUrl = context.request().absoluteURI()
내가 http://10.10.103.22:8080/some/page
대신 https://app.mydomain.com/some/page
같은 URL로 끝날. 해당 URL에 대해 모두 잘못되었습니다!
X-Forwarded-Host
등 원래 요청에 대한 자세한 설명을 헤더를 찾았지만 그것은 단지
app.mydomain.com
포함 또는 때때로 포트
app.mydomain:80
을 가지고 있지만,이 URL의 모든 부분을 파악하는 것만으로는 충분하지 않습니다, 나는 결국
http://app.mydomain.com:8080/some/page
과 같이 아직 정확한 공개 URL이 아닙니다.
"something/page1"페이지가 동일한 서버의 "something/page2"로 이동하는 것과 같이 현재 URL뿐만 아니라 피어 URL도 처리해야합니다. 공용 URL의 중요한 부분을 얻을 수 없기 때문에 다른 URL로 변환하려고 할 때 언급 한 것과 동일한 문제가 있습니다.
Vertx-web에 메서드가 있습니까?이 공개 URL을 확인하기 위해 누락되었거나이를 해결하는 관용적 인 방법이 있습니까?
저는 Kotlin을 코딩하고 있습니다. 따라서이 언어에 대한 예제는 훌륭합니다!
참고 :이 질문에 의도적으로 작성된 저자 (Self-Answered Questions) 응답되어, 흥미있는 문제에 대한 해결 방법은 SO에서 공유되도록.