nginx config file formatter/beautifier written in Python with no additional dependencies.
Python
424
51 commits
updated Mar 9, 2026
nginx config file formatter/beautifier written in Python with no additional dependencies. It can be used as a library or a standalone script. It formats nginx configuration files in a consistent way, described below:
Python 3.4 or later is needed to run this program. The easiest way is to download the package from PyPI:
pip install nginxfmt
The simplest form of installation is copying nginxfmt.py to your scripts' directory.
It has no third-party dependencies.
You can also clone the repository and symlink the executable:
cd
git clone https://github.com/slomkowski/nginx-config-formatter.git
ln -s ~/nginx-config-formatter/nginxfmt.py ~/bin/nginxfmt.py
It can format one or several files.
By default, the result is saved to the original file, but it can be redirected to stdout.
It can also function in piping mode, using the --pipe or - switch.
usage: nginxfmt.py [-h] [-v] [-] [-p | -b] [-i INDENT] [--max-empty-lines MAX_EMPTY_LINES] [--line-endings {auto,unix,windows,crlf,lf}] [config_files ...]
Formats nginx configuration files in consistent way.
positional arguments:
config_filesconfiguration files to format
options:
-h, --helpshow this help message and exit
-v, --verbose show formatted file names
-, --pipe reads content from standard input, prints result to stdout
-p, --print-resultprints result to stdout, original file is not changed
-b, --backup-original
backup original config file as filename.conf~
formatting options:
-i, --indent INDENT specify number of spaces for indentation
--max-empty-lines MAX_EMPTY_LINES
maximum number of consecutive empty lines to keep (default: 2)
--line-endings {auto,unix,windows,crlf,lf}
specify line ending style: 'unix' or 'lf' for \n, 'windows' or 'crlf' for \r\n. When not provided, system-default is used
The main logic is within the Formatter class, which can be used in third-party code.
import nginxfmt
# initializing with standard FormatterOptions
f = nginxfmt.Formatter()
# format from string
formatted_text = f.format_string(unformatted_text)
# format file and save result to the same file
f.format_file(unformatted_file_path)
# format file and save result to the same file, original unformatted content is backed up
f.format_file(unformatted_file_path, backup_path)
Customizing formatting options:
import nginxfmt
fo = nginxfmt.FormatterOptions()
fo.indentation = 2 # 2 spaces instead of default 4
fo.line_endings = '\n' # force Unix line endings
fo.max_empty_lines = 1 # allow at most 1 consecutive empty line (default: 2)
# initialize with standard FormatterOptions
f = nginxfmt.Formatter(fo)
Please create an issue at https://github.com/slomkowski/nginx-config-formatter/issues. Be sure to include config snippets to reproduce the issue, preferably:
Copyright 2021 Michał Słomkowski. License: Apache 2.0. Previously published under https://github.com/1connect/nginx-config-formatter.
Python
100.0%
nginx config file formatter/beautifier written in Python with no additional dependencies.
Python
424
51 commits
updated Mar 9, 2026
nginx config file formatter/beautifier written in Python with no additional dependencies. It can be used as a library or a standalone script. It formats nginx configuration files in a consistent way, described below:
Python 3.4 or later is needed to run this program. The easiest way is to download the package from PyPI:
pip install nginxfmt
The simplest form of installation is copying nginxfmt.py to your scripts' directory.
It has no third-party dependencies.
You can also clone the repository and symlink the executable:
cd
git clone https://github.com/slomkowski/nginx-config-formatter.git
ln -s ~/nginx-config-formatter/nginxfmt.py ~/bin/nginxfmt.py
It can format one or several files.
By default, the result is saved to the original file, but it can be redirected to stdout.
It can also function in piping mode, using the --pipe or - switch.
usage: nginxfmt.py [-h] [-v] [-] [-p | -b] [-i INDENT] [--max-empty-lines MAX_EMPTY_LINES] [--line-endings {auto,unix,windows,crlf,lf}] [config_files ...]
Formats nginx configuration files in consistent way.
positional arguments:
config_filesconfiguration files to format
options:
-h, --helpshow this help message and exit
-v, --verbose show formatted file names
-, --pipe reads content from standard input, prints result to stdout
-p, --print-resultprints result to stdout, original file is not changed
-b, --backup-original
backup original config file as filename.conf~
formatting options:
-i, --indent INDENT specify number of spaces for indentation
--max-empty-lines MAX_EMPTY_LINES
maximum number of consecutive empty lines to keep (default: 2)
--line-endings {auto,unix,windows,crlf,lf}
specify line ending style: 'unix' or 'lf' for \n, 'windows' or 'crlf' for \r\n. When not provided, system-default is used
The main logic is within the Formatter class, which can be used in third-party code.
import nginxfmt
# initializing with standard FormatterOptions
f = nginxfmt.Formatter()
# format from string
formatted_text = f.format_string(unformatted_text)
# format file and save result to the same file
f.format_file(unformatted_file_path)
# format file and save result to the same file, original unformatted content is backed up
f.format_file(unformatted_file_path, backup_path)
Customizing formatting options:
import nginxfmt
fo = nginxfmt.FormatterOptions()
fo.indentation = 2 # 2 spaces instead of default 4
fo.line_endings = '\n' # force Unix line endings
fo.max_empty_lines = 1 # allow at most 1 consecutive empty line (default: 2)
# initialize with standard FormatterOptions
f = nginxfmt.Formatter(fo)
Please create an issue at https://github.com/slomkowski/nginx-config-formatter/issues. Be sure to include config snippets to reproduce the issue, preferably:
Copyright 2021 Michał Słomkowski. License: Apache 2.0. Previously published under https://github.com/1connect/nginx-config-formatter.
Python
100.0%