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?

Asked By: grigoryvp

||

Answers:

There seems to exist an augeas lens supporting at least a subset of the nginx config file syntax. Augeas also has Python bindings.

Answered By: mensi
  1. https://www.npmjs.com/package/nginx-conf

  2. 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.

  3. There is also ServerMgr.
    It’s not really a parser, just allows for basic mappings.

  4. Last but not least, actually first, because based on pyparsing: https://github.com/fatiherikli/nginxparser

    pip install git+https://github.com/fatiherikli/nginxparser.git

Answered By: Jens A. Koch

There is now nginx-conf, an NPM module that provides programmatic access to nginx configurations.

Answered By: Steve Bennett

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.

Answered By: Jeremy Cook

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.

Answered By: Vini.g.fer
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.