nginx-config-builder

by linkedin

A python library for building nginx configuration files programatically

141 Stars 31 Forks Last release: Not found BSD 2-Clause "Simplified" License 18 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

PyPI Build Status Documentation Status License

nginx-config-builder

A python library for constructing nginx configuration files.

Installation

pip install nginx-config-builder

Usage

This library ships two interfaces to build configuration with, a high level builder API as well as the low level block-based API that the builder makes use of. Consumers can choose whichever makes sense for their use case:

The Builder API

The builder API is expressive and pluggable.

>>> from nginx.config.builder import NginxConfigBuilder
>>> nginx = NginxConfigBuilder(daemon='on')
>>> with nginx.add_server() as server:
...     server.add_route('/foo', proxy_pass='upstream').end()
...
>>> print(nginx)

error_log logs/nginx.error.log; worker_processes auto; daemon on; http { include ../conf/mime.types; server { server_name _; location /foo { proxy_pass upstream; } } } events { worker_connections 1024; }

The Block API

The block api provides more granularity and explicitness at the cost of being substantially more verbose than the builder api.

>>> from nginx.config.api import Config, Section, Location
>>> events = Section('events', worker_connections='1024')
>>> http = Section('http', include='../conf/mime.types')
>>> http.sections.add(
...     Section(
...         'server',
...         Location(
...             '/foo',
...             proxy_pass='upstream',
...         ),
...         server_name='_',
...     )
... )
>>> nginx = Config(
...     events,
...     http,
...     worker_processes='auto',
...     daemon='on',
...     error_log='var/error.log',
... )
>>> print(nginx)

error_log var/error.log; worker_processes auto; daemon on; http { include ../conf/mime.types; server { server_name _; location /foo { proxy_pass upstream; } } } events { worker_connections 1024; }

Development

Checkout the repo:

git clone [email protected]:linkedin/nginx-config-builder.git

Set up your virtual environment:

cd nginx-config-builder
python setup.py venv
source activate

Install the project and start hacking!

python setup.py develop

Don't forget to write/run tests!

pip install tox
tox

Authors

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.