HTTP 본문 내용에서 nginx가 URI를 다시 작성하는 방법은 무엇입니까?


14

이것은 nginx 리버스 프록시 302를 root 대신 URI 하위 폴더로 리디렉션 하는 방법에 대한 이전 질문에 대한 후속 조치 입니다.

rewriteproxy_pass지시문을 사용하여에 외부 https://domain.com/my/web/app/LAN 요청을 내부 LAN 서버 와 같은 URL로 프록시 처리 하는 nginx 프록시 서버가 https://10.0.0.22/있습니다. ASCII UML로 번역을 표현하려는 시도는 다음과 같습니다.

                                    .-------------.       .------------------.
                                    | Nginx proxy  |      | Local web server |
                                    | (domain.com) |      | (10.0.0.22)      |
                                    '-------------'       '------------------'
                                               |                 |
                                               |                 |
GET https://domain.com/my/web/app/ ----------->|                 |
                                               |---------------->| GET /
                                               |                 |
                                               |<----------------| 302 redirect /login.php
302 redirect /my/web/app/login.php <-----------|                 |
                                               |                 |
GET https://domain.com/my/web/app/login.php -->|                 |
                                               |---------------->| GET /login.php
                                               |                 |
                                               |<----------------| 200
HTML body content (images, CSS, links) <-------|

내 nginx 구성 파일의 실제 위치 블록은 다음과 같습니다.

location ^~ /my/web/app/
{
    proxy_buffering   off;
    rewrite           /my/web/app/(.*) /$1 break;
    proxy_pass        https://10.0.0.22/;
    proxy_redirect    default;
}

HTTP 요청 및 응답에 대한 내부 및 외부 URI 경로 간의 URI 변환에는 효과적이지만 HTML 컨텐츠 (본문 이미지, CSS, 스크립트)의 URI는 변환되지 않습니다.

예를 들어 /images/logo.png와 같은 URI를 사용하여 HTML 응답에 포함 된 상대 경로가있는 이미지는 웹 클라이언트로 다시 전달되어 https://domain.com/images/logo.png대신로 해석됩니다 https://domain.com/my/web/app/images/logo.png.

왜 이런 일이 발생하는지 이해할 수 있지만 요청뿐만 아니라 콘텐츠를 동적으로 프록시하는 방법이 있다면 좋을 것입니다. HTML 콘텐츠에 포함 된 URI를 변환하기 위해 nginx를 얻는 방법이 있습니까? 프록시 서버를 통과 할 때 HTML 컨텐츠를 동적으로 구문 분석하고 업데이트 할 수 있습니까?


2
해결책을 찾았습니까? 그렇다면 답변으로 게시 할 수 있습니까?
Huygens

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.