Wenn ich eine Umgebungsvariable in der Nginx-Konfiguration verwende und Nginx so konfiguriert ist, dass nur statische Dateien (HTML, JS, CSS - z. B. eine AngularJs-App) bereitgestellt werden, kann ich die Umgebungsvariable in einer von Nginx bereitgestellten JS-Datei verwenden ? Oder ist die einzige Möglichkeit, dies zu tun, um einen nicht statischen Server auszuführen, z. B. io.js, PHP usw.
Übrigens können Sie Umgebungsvariablen in der Konfiguration von nginx nicht nativ verwenden.
Wenn ich über Umgebungsvariablen in der Nginx-Konfiguration spreche, meine ich wie in diesem Beitrag: Wie kann ich Umgebungsvariablen in der Nginx.conf verwenden, wo sie env APP_WEB_1_PORT_5000_TCP_ADDR;
und verwenden$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"};
Erklären Sie genau Ihren Anwendungsfall
Mein spezieller Anwendungsfall ist, dass ich eine AngularJS-App mit Nginx-Unterstützung in einem Docker-Container habe. Die App ist eine "Einzelseitenanwendung", die eine API verwendet, die insgesamt auf einem anderen System ausgeführt wird. Derzeit führe ich einen anderen Docker-Container zwischen Produktion und Staging aus, da die App eine andere Konfiguration hat, z. B. den Google-Analtyics-Code. Diese umgebungsspezifischen Daten werden in einer config.js
Datei gespeichert und die Werte sind derzeit fest codiert, ein Wert für den master
Zweig in Git und ein anderer Wert für den staging
Zweig. Ich möchte das Design ändern, damit ich für die Produktion und die Inszenierung denselben Container verwenden kann . Ich möchte eine ENV-Variable an den Container übergeben, wenn ich sie ausführe ( docker run -e GACODE=UA-12345-6 ...
) und nginx die ENV-Variable verwenden soll (via env GACODE;
und $ENV{"GACODE"}
so dieconfig.js
Datei kann die übergebenen GoogleAnaltyics-Codes verwenden, anstatt sie fest zu codieren. Ich weiß nicht, ob dies möglich ist oder nicht (daher die Frage;)). Die Verwendung von nur Nginx macht meinen Container zu einem einzigen Prozess. Wenn ich jedoch io.js verwenden muss, benötige ich mehrere verknüpfte Container und mehr bewegliche Teile sind komplexer.