Need help with python-nginx?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

peakwinter
224 Stars 64 Forks GNU General Public License v3.0 85 Commits 3 Opened issues

Description

Create and modify nginx serverblock configs in Python

Services available

!
?

Need anything else?

Contributors list

# 202,137
Shell
nginx
python-...
python3
19 commits
# 267,574
nginx
python-...
python3
nginx-s...
15 commits
# 367,885
python-...
nginx
python-...
python3
5 commits
# 521,396
python-...
nginx
python-...
python3
1 commit
# 417,283
python-...
nginx
python-...
python3
1 commit
# 91,790
Bootstr...
vuejs
sso-log...
oauth2
1 commit

python-nginx

A module for easily creating and modifying nginx serverblock configurations in Python (including comments!).

Install

pip install python-nginx

Examples

Create an nginx serverblock and save it to file:

>>> import nginx
>>> c = nginx.Conf()
>>> u = nginx.Upstream('php',
...     nginx.Key('server', 'unix:/tmp/php-fcgi.socket')
... )
>>> c.add(u)
>>> s = nginx.Server()
>>> s.add(
...     nginx.Key('listen', '80'),
...     nginx.Comment('Yes, python-nginx can read/write comments!'),
...     nginx.Key('server_name', 'localhost 127.0.0.1'),
...     nginx.Key('root', '/srv/http'),
...     nginx.Key('index', 'index.php'),
...     nginx.Location('= /robots.txt',
...          nginx.Key('allow', 'all'),
...          nginx.Key('log_not_found', 'off'),
...          nginx.Key('access_log', 'off')
...     ),
...     nginx.Location('~ \.php$',
...          nginx.Key('include', 'fastcgi.conf'),
...          nginx.Key('fastcgi_intercept_errors', 'on'),
...          nginx.Key('fastcgi_pass', 'php')
...     )
... )
>>> c.add(s)
>>> nginx.dumpf(c, '/etc/nginx/sites-available/mysite')

Load an nginx serverblock from a file:

>>> import nginx
>>> c = nginx.loadf('/etc/nginx/sites-available/testsite')
>>> c.children
[]
>>> c.server.children
[, , , ]
>>> c.as_dict
{'conf': [{'server': [{'#': 'This is a test comment'}, {'server_name': 'localhost'}, {'root': '/srv/http'}, {'location /': [{'allow': 'all'}]}]}]}

Format an nginx serverblock into a string (change the amount of spaces (or tabs) for each indentation level by modifying

nginx.INDENT
first):
>>> c.servers
[]
>>> c.as_strings
['server {\n', '    # This is a test comment\n', '    server_name localhost;\n', '    root /srv/http;\n', '\n    location / {\n', '        allow all;\n', '    }\n\n', '}\n']

Find where you put your keys:

>>> import nginx
>>> c = nginx.loadf('/etc/nginx/sites-available/testsite')
>>> c.filter('Server')
[]
>>> c.filter('Server')[0].filter('Key', 'root')
[]
>>> c.filter('Server')[0].filter('Location')
[]

Or just get everything by its type:

>>> import nginx
>>> c = nginx.loadf('/etc/nginx/sites-available/testsite')
>>> c.servers
[]
>>> c.servers[0].keys
[, ]

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.