Це продовження мого попереднього питання про те, як зробити nginx зворотного проксі-сервера 302 до підпапки URI замість root .
У мене є проксі-сервер nginx, який використовує директиви rewrite
та proxy_pass
директиви для проксі зовнішніх запитів до URL-адреси, наприклад, https://domain.com/my/web/app/
до внутрішнього сервера локальної мережі в 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;
}
Він чудово підходить для перекладу URI між внутрішнім та зовнішнім шляхами URI для HTTP-запитів та відповідей, але будь-які URI-вмісти у вмісті HTML (зображення тіла, CSS, сценарії) не перекладаються.
Наприклад, зображення із відносними шляхами, вбудованими у відповідь HTML, з URI, такими як /images/logo.png, повертаються назад до веб-клієнта та інтерпретуються як https://domain.com/images/logo.png
замість https://domain.com/my/web/app/images/logo.png
.
Я можу зрозуміти, чому це відбувається, але було б чудово, якби існував спосіб динамічного проксі-вмісту, а також запитів. Чи є спосіб отримати nginx для конвертування URI, вбудованих у вміст HTML? Чи можна динамічно розбирати та оновлювати вміст HTML під час проходження через проксі-сервер?