Si j'utilise une variable d'environnement dans la configuration nginx et que nginx est configuré pour ne servir que des fichiers statiques (html, js, css - par exemple une application AngularJs), est-il possible d'utiliser la variable d'environnement dans un fichier JS que nginx sert ? Ou est le seul moyen de le faire pour exécuter un serveur non statique, par exemple io.js, php, etc.
De plus, vous ne pouvez pas utiliser les variables d'environnement de manière native dans la configuration de nginx.
Quand je parle de vars d'environnement dans la configuration nginx, je veux dire comme dans cet article: Comment puis-je utiliser les variables d'environnement dans Nginx.conf où elles utilisent env APP_WEB_1_PORT_5000_TCP_ADDR;
et$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"};
Expliquez exactement votre cas d'utilisation
Mon cas d'utilisation spécifique est que j'ai une application AngularJS propulsée par nginx dans un conteneur Docker. L'application est une "application à page unique" qui utilise une API fonctionnant sur un autre système. Actuellement, je lance un conteneur Docker différent entre la production et la mise en scène, car l'application a une configuration différente, par exemple le code Google-Analtyics. Ces données spécifiques à l'environnement sont conservées dans un config.js
fichier et les valeurs sont actuellement codées en dur, une valeur pour la master
branche dans git et une valeur différente pour la staging
branche. Je souhaite modifier la conception afin de pouvoir utiliser le même conteneur pour la production et la mise en scène. Je veux passer une var ENV dans le conteneur quand je l'exécute ( docker run -e GACODE=UA-12345-6 ...
) et demander à nginx d'utiliser la var ENV (via env GACODE;
et $ENV{"GACODE"}
donc laconfig.js
fichier peut utiliser les codes GoogleAnaltyics qui sont transmis, plutôt que de les coder en dur). Je ne sais pas si c'est possible ou pas (d'où la question;)). L'utilisation de nginx seulement fait de mon conteneur un processus unique, alors que si je dois utiliser io.js, alors j'aurai besoin de plusieurs conteneurs liés et plus de pièces mobiles sont plus complexes).