nginx is a free, open source networking & connectivity project written in C and released under BSD-2-Clause. It has 31,681 GitHub stars, 8,302 forks and 468 open issues, and was last pushed 2 days ago. On this registry it ranks #5 of 14 tracked projects in Networking & Connectivity, with 5 head-to-head comparisons available.

What is nginx?

NGINX is the official open-source repository for the NGINX web server and its load balancer, reverse proxy, API gateway and content cache roles, written in C under the BSD-2-Clause licence and aimed at system administrators, DevOps engineers and platform teams who need to serve, balance and protect their own HTTP traffic.

What it is

NGINX is installed software rather than a library or a hosted service. Binary packages are published for all major operating systems and Linux distributions, with separate installation procedures for Linux, FreeBSD and Windows executables. The codebase is written in C and distributed under a simplified 2-clause BSD-like licence, and it is organised as a set of individual modules, each extending core functionality by providing additional configurable features. Modules can be static, defined at build time and compiled into the resulting binary, or dynamic. The project is actively developed: the repository carries 31,681 stars, 8,302 forks and 468 open issues, with the most recent push in September 2026.

The concrete problem it solves is control over the version of the web server that fronts an application. Nearly all popular Linux-based operating systems ship a community version of nginx, and the README strongly advises installing the official packages or building from the sources in this repository instead, because that is the way to be certain of running the most recent release, including the latest feature set, fixes and security patches. The official distribution also carries the documentation set operators work from, including the Beginner's Guide, the module and directive reference, and the development guide.

Key capabilities

  • Acts as a web server and reverse proxy for HTTP, HTTPS, HTTP/2 and HTTP/3, with QUIC and TLS support.
  • Balances load across backends, and proxies TCP, UDP and mail traffic through the tcp-proxy-server, udp-proxy-server and mail-proxy-server roles.
  • Caches content as a content cache and applies rate limiting in front of upstream services.
  • Serves as an API gateway in front of application services.
  • Supports static modules defined at build time and dynamic modules loaded separately.
  • Publishes Stable and Mainline binary branches, with distinct installation processes for Linux, FreeBSD and Windows.
  • Builds from source through the documented configure, compile, install and test sequence, with an explicit dependencies step.

Who uses it and how

  • System administrators on Linux distributions and FreeBSD who want the official build rather than the community version bundled with the operating system.
  • Platform and operations teams that terminate TLS, install SSL certificates, enable HTTPS, and distribute traffic across multiple application backends.
  • Busy services that need content caching and rate limiting in front of origin servers rather than at the application layer.
  • Operators of Windows servers, who use the published Windows executables.
  • Contributors and integrators, who work through the community forum at community.nginx.org under the Contributor Covenant 2.1 code of conduct and the development guide.

Getting started

Installation follows the official binary packages listed at nginx.org/en/linux_packages.html, the FreeBSD installation process, or the Windows executables; alternatively, clone the repository, install dependencies, run the configure step, compile, and test the installed binary. Detailed instructions, including the Beginners Guide, live in the full documentation at nginx.org/en/docs/.

How it compares

No comparable open-source projects are named in the facts for this entry, so NGINX stands alone in this registry. Enterprise distributions, commercial support and training are available separately from F5, Inc, which is the only commercial counterpart the facts identify.

When to use it — and when not to

Building from source means running a C toolchain and installing dependencies before the configure step, and a self-hoster must also choose between the Stable and Mainline branches and keep that choice patched, especially with 468 open issues tracked in the repository. The README frames itself as a basic, structured introduction for novice users rather than a complete operational guide, so the full documentation and development guide are required reading for anything beyond a simple deployment. Teams that want vendor-backed enterprise distributions, commercial support or training should go to F5 instead of this repository, and anyone unwilling to track releases and security patches across a chosen branch should not run it as a hand-built install.

project readme (upstream, from github) — read inline

Project Status: Active – The project has reached a stable, usable state and is being actively developed. Community Forum License Code of Conduct

NGINX (pronounced "engine x" or "en-jin-eks") is the world's most popular Web Server, high performance Load Balancer, Reverse Proxy, API Gateway and Content Cache.

NGINX is free and open source software, distributed under the terms of a simplified 2-clause BSD-like license.

Enterprise distributions, commercial support and training are available from F5, Inc.

[!IMPORTANT] The goal of this README is to provide a basic, structured introduction to NGINX for novice users. Please refer to the full NGINX documentation for detailed information on installing, building, configuring, debugging, and more. These documentation pages also contain a more detailed Beginners Guide, How-Tos, Development guide, and a complete module and directive reference.

Table of contents

How it works

NGINX is installed software with binary packages available for all major operating systems and Linux distributions. See Tested OS and Platforms for a full list of compatible systems.

[!IMPORTANT] While nearly all popular Linux-based operating systems are distributed with a community version of nginx, we highly advise installation and usage of official packages or sources from this repository. Doing so ensures that you're using the most recent release or source code, including the latest feature-set, fixes and security patches.

Modules

NGINX is comprised of individual modules, each extending core functionality by providing additional, configurable features. See "Modules reference" at the bottom of nginx documentation for a complete list of official modules.

NGINX modules can be built and distributed as static or dynamic modules. Static modules are defined at build-time, compiled, and distributed in the resulting binaries. See Dynamic Modules for more information on how they work, as well as, how to obtain, install, and configure them.

[!TIP] You can issue the following command to see which static modules your NGINX binaries were built with:

nginx -V

See Configuring the build for information on how to include specific Static modules into your nginx build.

Configurations

NGINX is highly flexible and configurable. Provisioning the software is achieved via text-based config file(s) accepting parameters called "Directives". See Configuration File's Structure for a comprehensive description of how NGINX configuration files work.

[!NOTE] The set of directives available to your distribution of NGINX is dependent on which modules have been made available to it.

Runtime

Rather than running in a single, monolithic process, NGINX is architected to scale beyond Operating System process limitations by operating as a collection of processes. They include:

  • A "master" process that maintains worker processes, as well as, reads and evaluates configuration files.
  • One or more "worker" processes that process data (eg. HTTP requests).

The number of worker processes is defined in the configuration file and may be fixed for a given configuration or automatically adjusted to the number of available CPU cores. In most cases, the latter option optimally balances load across available system resources, as NGINX is designed to efficiently distribute work across all worker processes.

[!TIP] Processes synchronize data through shared memory. For this reason, many NGINX directives require the allocation of shared memory zones. As an example, when configuring rate limiting, connecting clients may need to be tracked in a common memory zone so all worker processes can know how many times a particular client has accessed the server in a span of time.

Downloading and installing

Follow these steps to download and install precompiled NGINX binaries. You may also choose to build NGINX locally from source code.

Stable and Mainline binaries

NGINX binaries are built and distributed in two versions: stable and mainline. Stable binaries are built from stable branches and only contain critical fixes backported from the mainline version. Mainline binaries are built from the master branch and contain the latest features and bugfixes. You'll need to decide which is appropriate for your purposes.

Linux binary installation process

The NGINX binary installation process takes advantage of package managers native to specific Linux distributions. For this reason, first-time installations involve adding the official NGINX package repository to your system's package manager. Follow these steps to download, verify, and install NGINX binaries using the package manager appropriate for your Linux distribution.

Upgrades

Future upgrades to the latest version can be managed using the same package manager without the need to manually download and verify binaries.

FreeBSD installation process

For more information on installing NGINX on FreeBSD system, visit https://nginx.org/en/docs/install.html

Windows executables

Windows executables for mainline and stable releases can be found on the main NGINX download page. Note that the current implementation of NGINX for Windows is at the Proof-of-Concept stage and should only be used for development and testing purposes. For additional information, please see nginx for Windows.

Dynamic modules

NGINX version 1.9.11 added support for Dynamic Modules. Unlike Static modules, dynamically built modules can be downloaded, installed, and configured af

readme truncated — read the full docs on github

Frequently asked questions

Is nginx free to use?

nginx is open source under the BSD-2-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does nginx do?

The official NGINX Open Source repository.

What is nginx written in?

nginx is primarily written in C. Its source is publicly available at https://github.com/nginx/nginx, and it has 31,681 GitHub stars.