Any good way to programmatically change nginx config file from python?
Question:
I have a python script that dynamically alters nginx config file (nginx.conf
). Since nginx configuration is not in ini
format, i currently use some regexp to parse and modify file content. Is it the only way or some better way to programmatically alter nginx configuration exist?
Answers:
There seems to exist an augeas lens supporting at least a subset of the nginx config file syntax. Augeas also has Python bindings.
-
-
You might use the PyNginxConfig Parser.
http://code.google.com/p/pynginxconfig/source/browse/pynginxconfig.py#208
This implementation is close to the original one.
-
There is also ServerMgr.
It’s not really a parser, just allows for basic mappings.
-
Last but not least, actually first, because based on pyparsing: https://github.com/fatiherikli/nginxparser
pip install git+https://github.com/fatiherikli/nginxparser.git
There is now nginx-conf, an NPM module that provides programmatic access to nginx configurations.
NGINX Inc started providing a library in 2017 that is a “quick and reliable way to convert NGINX configurations into JSON and back.” It’s called crossplan and you can get it with pip
.
pip install crossplane
With this you can parse a file to JSON, deserialize, manipulate, serialize back to JSON, and then convert back to the NGINX config file format.
Just found out about python-nginx, which works great out-of-the-box using only Python, and doesn’t seem to need any C or required Python package at all! Could improve docs a bit. Maybe I’ll send a pull request for that.
I have a python script that dynamically alters nginx config file (nginx.conf
). Since nginx configuration is not in ini
format, i currently use some regexp to parse and modify file content. Is it the only way or some better way to programmatically alter nginx configuration exist?
There seems to exist an augeas lens supporting at least a subset of the nginx config file syntax. Augeas also has Python bindings.
-
You might use the PyNginxConfig Parser.
http://code.google.com/p/pynginxconfig/source/browse/pynginxconfig.py#208
This implementation is close to the original one. -
There is also ServerMgr.
It’s not really a parser, just allows for basic mappings. -
Last but not least, actually first, because based on pyparsing: https://github.com/fatiherikli/nginxparser
pip install git+https://github.com/fatiherikli/nginxparser.git
There is now nginx-conf, an NPM module that provides programmatic access to nginx configurations.
NGINX Inc started providing a library in 2017 that is a “quick and reliable way to convert NGINX configurations into JSON and back.” It’s called crossplan and you can get it with pip
.
pip install crossplane
With this you can parse a file to JSON, deserialize, manipulate, serialize back to JSON, and then convert back to the NGINX config file format.
Just found out about python-nginx, which works great out-of-the-box using only Python, and doesn’t seem to need any C or required Python package at all! Could improve docs a bit. Maybe I’ll send a pull request for that.