HTTP gövdesi içeriğinde nginx URI'leri yeniden yazmak nasıl yapılır?


14

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 rewriteve proxy_passyö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.pngbunun 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?


2
bir çözüm buldun mu? Cevabınız evet ise cevap olarak gönderebilir misiniz?
Huygens

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.