<div dir="ltr"><div><span style="color:rgb(33,33,33);font-size:13px">What I want to be able to do is basically what this guy tried to do: </span><font color="#212121"><a href="https://serverfault.com/questions/577370/how-can-i-use-environment-variables-in-nginx-conf">https://serverfault.com/questions/577370/how-can-i-use-environment-variables-in-nginx-conf</a></font></div><div><font color="#212121"><br></font></div><div><font color="#212121">Succinctly, I want to pass the value of environment variables to my server and location contexts, and use those values in the arguments passed to my directives.</font></div><div><font color="#212121"><br></font></div><div><font color="#212121">For example. Say I have two servers, dev and prod; and that I have a file in sites-enabled that reads:</font></div><div><font color="#212121"><br></font>env URL;<br></div><div><font color="#212121"><div>server {</div><div>    listen 80;</div><div>    server_name $URL;</div><div><br></div><div>    access_log /var/log/nginx/access.log;</div><div>    error_log /var/log/nginx/error.log;</div><div><br></div><div>    location /static/ {</div><div>        alias /app/static/;</div><div>    }</div><div><br></div><div>    location / {</div><div>        alias /app/main/;</div><div>    }</div><div>}</div><div><br></div><div>I want the server_name directive to receive as argument the domains (or list of domains) contained in the environment variable $URL.</div><div><br></div><div>This is very useful when using container technology (Docker, Kubernetes, etc) as the same Nginx configuration files may be used by many different environments (dev, staging, prod, CI, CD, etc). Many times these environments are created dynamically and programmatically by our continuous delivery pipelines, so setting them by hand is cumbersome or downright impossible. Right now I use sed and/or envsubst in our scripts to modify the file before using it.</div><div><br></div><div>It would simplify our deployment scripts a ton if Nginx could just read these environment variables and substitute them for us wherever we need.</div></font></div><span style="color:rgb(33,33,33);font-size:13px">> Hello!</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">On Thu, Jan 04, 2018 at 01:22:15AM +0000, German Jaber wrote:</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">> Is there a reason why the "env" directive is only allowed inside the "main"</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">> contexts?</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">The "env" directive controls which environment variables will be</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">available in the nginx worker processes.  Environment variables</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">apply to the whole worker process, and are not differentiated based on</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">what the worker process is doing in the particular time.  As such,</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">these directives are to be specified at the global level.</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">> It would simplify many of my Docker deployments if I could do away with sed</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">> and envsubst and use the "env" directive directly.</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">></span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">> If the maintainers approve the inclusion of this feature in Nginx, I would</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">> like to offer my time to this project by implementing this functionality.</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">Sorry, from your description it is not clear what you are trying</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">to do and how the "env" directive can help here.  You may want to</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">elaborate on this.</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">--</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><span style="color:rgb(33,33,33);font-size:13px">Maxim Dounin</span><br style="color:rgb(33,33,33);font-size:13px"><span style="color:rgb(33,33,33);font-size:13px">> </span><a href="http://mdounin.ru/" rel="noreferrer" target="_blank" style="font-size:13px">http://mdounin.ru/</a><br style="color:rgb(33,33,33);font-size:13px"><div><br></div></div>