set variables within config

Maxim Dounin mdounin at
Thu May 14 23:32:48 MSD 2009


On Thu, May 14, 2009 at 10:59:26AM -0600, Jon Garvin wrote:

> I haven't seen any way to do this in the docs, so this might be more of
> a feature request, but if someone knows of a way to accomplish this that
> I missed, let me know.
> I'd really like to be able to set a variable in the config and then use
> it to set other settings, with the ultimate goal of DRYing up the config
> file.  For instance, right now I've got many different 'server' blocks,
> each with a few lines that look like...
> root /var/www/domain1/current/public;
> access_log  /var/www/domain1/shared/log/nginx.access.log;
> error_log  /var/www/domain1/shared/log/nginx.error.log;
> Lots of repetition there.  Would be great if instead I could say...
> $basepath = /var/www/domain1
> root $basepath/current/public;
> access_log  $basepath/shared/log/nginx.access.log;
> error_log  $basepath/shared/log/nginx.error.log;
> And then even better to be able th extract out those last three lines
> into a paths.conf file (or something), so that each server block could
> just say...
> $basepath = /var/www/domain#
> include paths.conf

As of now nginx has no variables expanded during config loading - 
everything expaneded during request processing.  So using 
variables just to save some config lines is somewhat stupid as it 
means wasting lots of CPU time for every request.

If you really need to simplify configs - it's easy to generate 
them using make and sed.

Maxim Dounin

More information about the nginx mailing list