如果我在nginx配置中使用环境变量,并且nginx配置为仅提供静态文件(html,js,css-例如AngularJs应用程序),我有什么方法可以在nginx服务的JS文件中使用环境变量?或者是运行非静态服务器(例如io.js,php等)的唯一方法。
顺便说一句,您不能在nginx的配置中本地使用环境变量。
当我在Nginx配置中谈论环境变量时,我的意思是像这篇文章一样:如何在Nginx.conf中使用环境变量env APP_WEB_1_PORT_5000_TCP_ADDR;
和$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"};
确切说明您的用例
我的特定用例是,我在Docker容器中有一个由nginx驱动的AngularJS应用。该应用程序是一个“单页应用程序”,它完全消耗了在另一个系统上运行的API。目前,我在生产和登台之间运行一个不同的Docker容器,因为该应用程序具有一些不同的配置,例如Google-Analtyics代码。此特定于环境的数据保存在config.js
文件中,并且当前值已进行硬编码,master
git中分支的一个值和分支的其他值staging
。我想更改设计,以便可以在生产和暂存中使用相同的容器。我想通过一个ENV VAR到当我运行它(容器docker run -e GACODE=UA-12345-6 ...
),并有使用nginx的ENV VAR(通过env GACODE;
与$ENV{"GACODE"}
这样的config.js
文件可以使用传入的GoogleAnaltyics代码,而不是对其进行硬编码)。我不知道这是否可行(因此提出问题;)。仅使用nginx可使我的容器成为一个单进程,而如果必须使用io.js,则需要多个链接的容器,并且需要移动的部件会更加复杂。