Skip to content

About

A python library for building nginx configuration files programatically

Resources

Contributing

Stars

176 stars

Watchers

19 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

Repository files navigation

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 git@github.com: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

About

A python library for building nginx configuration files programatically

Resources

Contributing

Stars

176 stars

Watchers

19 watching

Forks

Releases

Packages

Used by

Contributors

Languages