grigoryvp
grigoryvp

Reputation: 42543

Any good way to programmatically change nginx config file from python?

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?

Upvotes: 25

Views: 20626

Answers (5)

Jens A. Koch
Jens A. Koch

Reputation: 41776

  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/pyhedgehog/nginxparser

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

Upvotes: 11

Vini.g.fer
Vini.g.fer

Reputation: 11919

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.

Upvotes: 3

Jeremy Cook
Jeremy Cook

Reputation: 22073

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.

Upvotes: 11

Steve Bennett
Steve Bennett

Reputation: 126425

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

Upvotes: -2

mensi
mensi

Reputation: 9826

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

Upvotes: 4

Related Questions