이것은 nginx 리버스 프록시 302를 root 대신 URI 하위 폴더로 리디렉션 하는 방법에 대한 이전 질문에 대한 후속 조치 입니다.
rewrite
및 proxy_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 컨텐츠를 동적으로 구문 분석하고 업데이트 할 수 있습니까?