Bu, nginx ters proxy 302'nin kök yerine bir URI alt klasörüne yeniden yönlendirilmesini nasıl yapacağım hakkındaki önceki sorumun bir devamıdır .
Ben bir iç LAN sunucusu gibi bir URL dış istekleri proxy rewrite
ve proxy_pass
yönergeleri kullanan bir nginx proxy sunucusu var . İşte ASCII UML'deki çeviriyi temsil etme girişimim:https://domain.com/my/web/app/
https://10.0.0.22/
.-------------. .------------------.
| 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) <-------|
İşte benim nginx yapılandırma dosyasındaki gerçek konum bloğu:
location ^~ /my/web/app/
{
proxy_buffering off;
rewrite /my/web/app/(.*) /$1 break;
proxy_pass https://10.0.0.22/;
proxy_redirect default;
}
HTTP istekleri ve yanıtları için iç ve dış URI yolları arasındaki URI çevirisi için harika çalışır, ancak HTML içeriğindeki herhangi bir URI (gövde görüntüleri, CSS, komut dosyaları) çevrilmez.
Örneğin, HTML yanıtına katıştırılmış göreli yolları olan ve /images/logo.png gibi URI'leri olan görüntüler web istemcisine geri aktarılır ve https://domain.com/images/logo.png
bunun yerine olarak yorumlanır https://domain.com/my/web/app/images/logo.png
.
Bunun neden olduğunu anlayabiliyorum, ancak isteklerin yanı sıra içeriği dinamik olarak proxy yapmanın bir yolu olsaydı harika olurdu. HTML içeriğine gömülü URI'ları dönüştürmek için nginx almanın bir yolu var mı? HTML içeriğini proxy sunucusundan geçerken dinamik olarak ayrıştırıp güncellemek mümkün müdür?