nginx 리버스 프록시가 리턴 한 HTML 페이지 수정


17

인터넷에서 인트라넷 내부에있는 타사 응용 프로그램에 액세스하기위한 리버스 프록시 설정이 있습니다. 이 응용 프로그램이 URL에 있다고 가정 해 봅시다.

https://internalserver:8080/ (인트라넷에서만 도달 가능)

프록시가 켜져 있습니다.

https://proxyserver/ (세계 어느 곳에서나 접근 가능)

프록시는 nginx에 의해 관리되며 정상적으로 작동합니다. 사용자가 액세스하면에서 https://proxyserver/ 앱의 콘텐츠를 얻습니다 https://internalserver:8080/.

문제는 응용 프로그램이 HTML 응답에 절대 URL을 작성하고 있기 때문에 사용자가 새 페이지에 대한 링크를 클릭하면 브라우저가 내부 이름이있는 페이지를 찾으려고합니다 (예 : https://internalserver:8080/somepage 대신) https://proxyserver/somepage.

이것이 프로그램 버그라는 것을 알고 있지만 프로그램을 수정할 수 없습니다.

응답을 가로 채고 URL을 수정 한 다음 nginx를 사용하여 최종 클라이언트에 보낼 수 있습니까 (수정)? 아니면 다른 도구와 함께?

편집 : 나는 이 질문을 전에 보았지만 내 사건은 더 구체적이며 인용 된 질문은 일반적인 수정을 요구합니다. 이 경우 fast-cgi ad hoc 프로그램이 최고의 솔루션이며, 내가 원하는 것은보다 일반적인 시나리오에 대한보다 구체적인 솔루션입니다. fast-cgi 프로그램이 작동 할 수 있지만 가장 쉽고 강력한 방법을 찾고 있으며이 시나리오를위한 솔루션으로 현실 세계에 입증되었습니다.


답변:



3

http://nginx.org/en/docs/http/ngx_http_sub_module.html

ngx_http_sub_module 모듈은 지정된 문자열을 다른 문자열로 바꾸어 응답을 수정하는 필터입니다.

이 모듈은 기본적으로 빌드되지 않으며 --with-http_sub_module 구성 매개 변수를 사용하여 활성화해야합니다.

구성 예

sub_filter      </head>
    '</head><script language="javascript" src="$script"></script>';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.