2017-09-13 9 views
0

Auf dem Host habe ich den Andock-Container auf Port 4012, und in der Andock-Container die Webapp läuft auf Port 3000 (0.0.0.0:4012-> 3000/tcp) So zu Zugriff auf die Webapp ich gehe einfach zu http://hostname:4012 und die Webseite zeigt gut. Ich möchte zu http://hostname/metrics gehen, um die gleiche Webseite von meinem Browser zu starten.NGINX Reverse Proxy zu Docker Container läuft Web App

Während ich diese bekam einfach zu arbeiten auf dem Host einen Ort zum nginx.conf Zugabe:
Standort/Metriken {
proxy_pass http://localhost:4012;
}

Alles, was lädt die index.html (Ich sehe den gleichen HTML-Quellcode in http://localhost:4012 und http://hostname/metrics) aber die http://hostname/metrics nicht die JavaScript-Assets laden benötigt, um die Webapp zu laufen. Von Entwickler-Tools sehe ich die nicht proxied Seite lädt Vermögenswerte wie folgt: http://hostname:4012/assets/styles.css Während die Proxy-Version, die auf/Metriken geht so zu laden versucht: http://hostname/assets/styles.css

Es anhängen nicht die/Metriken auf die Vermögenswerte mag es, um die index.html zu bekommen ... Was fehlt mir hier? Wenn es irgendetwas bedeutet, läuft die Webanwendung auf einem Nodejs-Express-Server, der Port 3000 auf dem Andock-Container abgehört.

Antwort

0

Sie müssen die App machen, dass die Art und Weise arbeiten

location /metrics/ { 
    proxy_pass http://localhost:4012/; 
    sub_filter_once off; 
    sub_filter 'http://localhost:4012/' '$scheme://$host/metrics/'; 
    sub_filter '<head>' '<head>\n<base href="hostname:4012">'; 
} 

So Hinzufügen eines <base>-Tag in den HTML hilft /css-/metrics/css zu ändern. Dann werden auch absolute URLs mit sub_filter geändert.

+0

Dies funktionierte leider nicht – pete

+0

Erarbeiten Sie das Problem? Sie müssen überprüfen, Chrome-Dev-Tools und sehen, ob es die URLs korrigiert oder nicht –

+0

Es gab keine Änderung. Die URLs der Assets in Dev-Tools haben die/metrics/mit dieser Änderung immer noch nicht angehängt. – pete

Verwandte Themen