Dynamic and Abstract Nginx
aakhtar3
Posted on October 1, 2020
Dynamic and Abstract Nginx
Nginx is a powerful webserver and can built dynamically by injecting environment variables with envsubst and importing modular configs with the include directive.
envsubst
- Create
/etc/nginx/nginx.conf.template
with environment variables${VAR}
- Use envsubst to dynamically generate a new
/etc/nginx/nginx.conf
# Define the environment variables
export SERVER='example' LOG='example'
# Run command to generate new nginx.conf
cd /etc/nginx
envsubst '${SERVER},${LOG}' < nginx.conf.template > nginx.conf
brew install
Mac users will need to install gettext which includes envsubst.
brew install gettext
brew link --force gettext
Include
From the example above using the sample http config.
*
is a wildcard and will match on example.com
.conf.
http {
...
include /etc/nginx/conf.d/example.*.conf;
...
}
Here is an example folder structure for your Nginx modules.
/etc/nginx/
nginx.conf # HTTP
/conf.d # Server(s)
example.com.conf # Can contain multiple servers
default.conf # Comes with nginx
*.conf
/sites-enabled # Includes
/location # Location Includes
assets.inc # /location blocks to static assets
*.inc
/SSL # SSL Includes
example.com.inc # Contains SSL directives for example.com
*.inc
/* # You can continue to modularize your code base
*.inc
Check out this repo which has more include
examples.
10up / nginx_configs
ARCHIVED: Nginx Configuration Template for WordPress Sites
💖 💪 🙅 🚩
aakhtar3
Posted on October 1, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.