Skip to main content

nginx is a really powerful software, but it requires non-trivial configuration and its own working directory. Command-line configuration is possible but verbose.

inginx creates a temporary working directory and assembles an nginx configuration optimized for common use cases.

[!TIP] The name “inginx” is derived from “instant nginx”

Examples

Serve file system

Serve a directory ./dir on 8787

inginx --serve ./dir --listen 0.0.0.0:8787

Output:

Running /usr/bin/freenginx in /tmp/tmpu8151mtc
127.0.0.1 - - [25/Aug/2025:11:18:50 +0200] "GET / HTTP/1.1" 200 263 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"
....

Reverse proxy

Start a reverse proxy up to https://echo.free.beeceptor.com on 8080

inginx --reverse https://echo.free.beeceptor.com --listen 0.0.0.0:8080

Output:

Running /usr/bin/freenginx in /tmp/tmpo66xmvm_
127.0.0.1 - - [25/Aug/2025:11:21:03 +0200] "GET / HTTP/1.1" 200 844 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"
...

Common Flags

  • --serve <directory> - Serve a local filesystem directory

  • --reverse <remote> - Set up a reverse proxy

  • --listen <address[:port]> - Tell Nginx what address/port to use

Installation

This is a self-contained script that has no dependencies, besides nginx itself. It is aiming to work on as old Python as 3.7.

Managed installation (uvx, pipx)

Ideal solution, but needs uvx, or pipx pre-installed.

uvx inginx --help
pipx install inginx
inginx --help

pip

pip install --user inginx --break-system-packages

[!WARNING] This is generally not recommended. It will work and not break anything in this case because inginx does not have any dependencies.

Manual

wget https://raw.githubusercontent.com/richard-hajek/inginx/refs/heads/main/inginx/inginx.py -O ~/.local/bin
chmod +x ~/.local/bin/inginx

[!WARNING] Check that ~/.local/bin is in your path by doing echo $PATH and checking, with your eyes, if '.local/bin' is there

If not, good luck, have fun, see https://askubuntu.com/questions/440691/add-a-binary-to-my-path for detailed instructions how to manage your $PATH

Advanced configuration

This tool is not indended for advanced configuration. It will however provide you with a good starting point. If you want to further customize the nginx instance, do

mkdir ./prefix
cd ./prefix
inginx <your configuration> --dry > nginx.conf

and then make any changes you want to the generated nginx.conf

And run your nginx with

nginx -p $(realpath .) -c $(realpath ./nginx.conf)

nginx binary

This software officially supports and recommends freenginx. It was built and tested for freenginx/1.29.0

Metadata

Release files for inginx 0.3.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for inginx 0.3.19
File Size Uploaded
inginx-0.3.19.tar.gz 4.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for inginx 0.3.19
File Interpreter ABI Platform
inginx-0.3.19-py3-none-any.whl Python 3 none any Details

Total release size: 10.2 kB

Release files / inginx-0.3.19.tar.gz

Download URL inginx-0.3.19.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
258582d7c12c50aa1979956394b4f6a2d27a1b31776be66e7448b3f933da938a
BLAKE2b-256 checksum
How to use checksums
b08cd5a87e7aa98bed6c847a1ad58391e505eb0055df99e42fc51c59bb759a99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 11, 2026.

Transparency log

Release files / inginx-0.3.19-py3-none-any.whl

Download URL inginx-0.3.19-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
85cafd749a582e6a8aad24aba716008c398dead812d6c234e1f1952936642534
BLAKE2b-256 checksum
How to use checksums
b23c1615bde712736ac71201e926e39c229f6a35e34d883d3f0fa4afe54d412a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.19 This release

2 release files

0.3.17

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.9

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.1

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page