Ziel-App-Assets nicht mit Nginx Proxy_Pass geladen

Ziel-App-Assets nicht mit Nginx Proxy_Pass geladen

Ich habe einen einfachen Nginx-Proxy, der auf läuft http://127.0.0.1:8080.

Dies ist das nginx.conf:

events {}
http { 
    server {
        listen 8080;
        server_name 127.0.0.1;
        rewrite_log on;
        error_log  /var/log/nginx/error.log notice;


        location / {
            proxy_pass http://127.0.0.1:5200;
            proxy_set_header  Host 127.0.0.1:5200;
        }
        location /api {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header  Host 127.0.0.1:8000;
        }
        location = /app2 {
            return 302 /app2/;
        }
        location /app2/ {
            proxy_pass http://127.0.0.1:5300/;
            proxy_set_header  Host 127.0.0.1:5300; 
        }

    }
}

Wenn Sie auf klicken http://127.0.0.1:8080/app2, wird die auf Port laufende App 5300angezeigt, aber die Assets werden nicht korrekt geladen. Ich vermute, dass nginx die Anforderung der Assets an die andere App weiterleitet, die auf Port läuft 5200, also location /. Ich habe diese App zur Bestätigung angehalten und dies ist das Protokoll von nginx (beachten Sie, dass Upstream als angezeigt wird, http://127.0.0.1:5200...aber es sollte sein http://127.0.0.1:5300...)

2023/09/17 23:47:32 [error] 29#29: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke..ttf?d7yf1v HTTP/1.1", upstream: "http://127.0.0.1:5200/assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke..ttf?d7yf1v", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [17/Sep/2023:23:47:32 +0000] "GET /assets/css/fonts/Pe-Icon-Stroke/Pe-icon-7-stroke..ttf?d7yf1v HTTP/1.1" 502 559 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"
2023/09/17 23:47:32 [error] 29#29: *10 connect() failed (111: Connection refused) while connecting to upstream, client: 127.0.0.1, server: 127.0.0.1, request: "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont..ttf?v=4.7.0 HTTP/1.1", upstream: "http://127.0.0.1:5200/assets/css/fonts/Font-Awesome/fontawesome-webfont..ttf?v=4.7.0", host: "127.0.0.1:8080", referrer: "http://127.0.0.1:8080/app2/"
127.0.0.1 - - [17/Sep/2023:23:47:32 +0000] "GET /assets/css/fonts/Font-Awesome/fontawesome-webfont..ttf?v=4.7.0 HTTP/1.1" 502 559 "http://127.0.0.1:8080/app2/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36"

Fehler von der Konsole: Fehler von der Konsole

Ich sehe ein ähnliches Problem bei http://127.0.0.1:8080/api„Assets nicht geladen“. Ich habe auch versucht, Regeln mit verschiedenen Regex-Kombinationen neu zu schreiben, aber es sind ähnliche Fehler aufgetreten.

So konfigurieren Sie Nginx für die Weiterleitung an verschiedene Apps und das korrekte Laden ihrer Assets.

Antwort1

Nach weiteren Untersuchungen und Tests rewritewurde die inhttps://stackoverflow.com/questions/62836801/nginx-reverse-proxy-how-to-serve-multiple-appshat in meinem Fall funktioniert.

Dies ist der Snippet, den ich zu meiner nginx.conf hinzugefügt habe, um die Assets von app2 korrekt zu laden

if ($http_referer ~ https?://[^/]+/app2/(.*))
{
    # rewrite request URI only if it isn't already started with '/app2' prefix
    rewrite ^((?!/app2).*) /app2$1;
}

verwandte Informationen