# nginx/unit

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/nginx-unit).**

5,560 stars · 371 forks · C · Apache-2.0 · archived

## Links

- GitHub: https://github.com/nginx/unit
- Homepage: https://unit.nginx.org
- awesome-repositories: https://awesome-repositories.com/repository/nginx-unit.md

## Description

NGINX Unit is an open-source application server designed to natively execute code across multiple programming language runtimes and WebAssembly within a single process. It serves as a multi-language application server that can run applications written in Go, Java, Node.js, Perl, PHP, Python, Ruby, and WebAssembly side by side, without requiring separate runtime environments for each language.

The server distinguishes itself through a RESTful JSON control API that enables dynamic, zero-downtime configuration changes without restarting the server. It combines event-driven asynchronous I/O with process-based language isolation, separating each application runtime into its own OS process for security and stability. Unit also integrates WebAssembly support using the WASI 0.2 interface, allowing components compiled from Rust or C to run as application handlers, and supports JavaScript expression evaluation in configuration values for dynamic routing and header manipulation.

Beyond its core application hosting capabilities, Unit provides comprehensive traffic management features including weighted round-robin load balancing, dynamic request routing based on URL, headers, or cookies, and static file serving with chrooting for security. It manages SSL/TLS certificates through the control API with support for SNI, session cache, and automated renewal via Certbot. The server also offers monitoring and observability through real-time metrics and access logging, along with tools for application lifecycle management, container deployment, and configuration automation.

Official binary packages are available for major Linux distributions, macOS, and Node.js, with additional community-maintained packages for Alpine, Arch, FreeBSD, and Gentoo.

## Tags

### Programming Languages & Runtimes

- [Multi-Language Runtime Support](https://awesome-repositories.com/f/programming-languages-runtimes/multi-language-runtime-support.md) — Hosts applications in multiple programming languages and versions side by side within a single server process. ([source](https://unit.nginx.org/keyfeatures/))
- [Python Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators/python-runtimes.md) — Serves Python WSGI applications by specifying the module and path in the configuration. ([source](https://unit.nginx.org/howto/samples/))
- [Application Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/php-application-servers/application-runtimes.md) — Provides a runtime adapter that serves PHP applications with configurable php.ini settings. ([source](https://unit.nginx.org/configuration/))
- [Multi-Language Application Servers](https://awesome-repositories.com/f/programming-languages-runtimes/php-application-servers/multi-language-application-servers.md) — Natively executes code across multiple programming language runtimes within a single process.
- [PHP Applications](https://awesome-repositories.com/f/programming-languages-runtimes/php-applications.md) — Serves PHP applications by specifying the root directory in the configuration. ([source](https://unit.nginx.org/howto/samples/))
- [Application Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/application-runtimes.md) — Executes WebAssembly modules using the WASI 0.2 interface as application runtimes. ([source](https://cdn.jsdelivr.net/gh/nginx/unit@master/README.md))
- [Application Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/embedded-webassembly-runtimes/extensible-webassembly-runtimes/application-runtimes.md) — Provides a runtime adapter that runs WebAssembly components as application handlers with filesystem access. ([source](https://unit.nginx.org/configuration/))
- [Application Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/python-runtimes/application-runtimes.md) — Provides a runtime adapter that runs Python WSGI or ASGI applications with virtual environment support. ([source](https://unit.nginx.org/configuration/))
- [Configuration Expression Evaluators](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators/javascript-runtimes/configuration-expression-evaluators.md) — Evaluates JavaScript template literals in configuration values for dynamic routing and header manipulation.
- [Perl Application Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/perl-application-runtimes.md) — Provides a runtime adapter that runs Perl PSGI applications with configurable thread settings. ([source](https://unit.nginx.org/configuration/))
- [Server-Side WebAssembly Runtimes](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/embedded-webassembly-runtimes/extensible-webassembly-runtimes/server-side-webassembly-runtimes.md) — Executes WebAssembly components using the WASI 0.2 interface as application runtimes.
- [WASI Program Execution](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/webassembly/wasi-program-execution.md) — Executes WebAssembly modules using the WASI 0.2 interface as application runtimes.

### Web Development

- [Multi-Language Application Servers](https://awesome-repositories.com/f/web-development/server-side-frameworks/server-side-runtimes/multi-language-application-servers.md) — Runs applications written in Go, Java, Node.js, Perl, PHP, Python, Ruby, and WebAssembly side by side without separate runtimes.
- [Application Runtimes](https://awesome-repositories.com/f/web-development/dynamic-loading-strategies/binary-module-loaders/webassembly-module-loaders/application-runtimes.md) — Serves WebAssembly components or modules compiled from Rust or C by specifying the component path. ([source](https://unit.nginx.org/howto/samples/))
- [Go Web Applications](https://awesome-repositories.com/f/web-development/go-web-applications.md) — Serves Go web applications by specifying the executable and working directory in the configuration. ([source](https://unit.nginx.org/howto/samples/))
- [Application Runtimes](https://awesome-repositories.com/f/web-development/go-web-applications/application-runtimes.md) — Provides a runtime adapter that runs Go applications within a multi-language application server. ([source](https://unit.nginx.org/configuration/))
- [Application Runtimes](https://awesome-repositories.com/f/web-development/java-web-hosting-platforms/application-runtimes.md) — Serves Java web applications by specifying the webapp directory in the configuration. ([source](https://unit.nginx.org/howto/samples/))
- [Application Runtimes](https://awesome-repositories.com/f/web-development/java/application-runtimes.md) — Provides a runtime adapter that deploys and runs Java web applications from WAR files. ([source](https://unit.nginx.org/configuration/))
- [Rack Application Servers](https://awesome-repositories.com/f/web-development/rack-application-servers.md) — Serves Ruby Rack applications by specifying the script and working directory in the configuration. ([source](https://unit.nginx.org/howto/samples/))
- [Application Runtimes](https://awesome-repositories.com/f/web-development/rack-application-servers/application-runtimes.md) — Provides a runtime adapter that runs Ruby Rack applications with lifecycle hooks. ([source](https://unit.nginx.org/configuration/))
- [Application Runtimes](https://awesome-repositories.com/f/web-development/serverless-platforms/webassembly-platforms/node-js-runtimes/application-runtimes.md) — Provides a runtime adapter that runs Node.js applications without code changes. ([source](https://unit.nginx.org/configuration/))
- [Framework-Specific App Configurations](https://awesome-repositories.com/f/web-development/application-configuration-frameworks/framework-specific-app-configurations.md) — Configures applications built with Django, Flask, Express, and Laravel to run on the server. ([source](https://unit.nginx.org/howto/))
- [Instant HTTP Responses](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-response-handling/instant-http-responses.md) — Responds immediately with an arbitrary HTTP status code and an optional redirect location. ([source](https://unit.nginx.org/configuration/))
- [Response Header Modifiers](https://awesome-repositories.com/f/web-development/backend-development/request-response-handling/http-response-handling/response-metadata-accessors/response-header-modifiers.md) — Adds, updates, or removes response headers dynamically before sending to clients. ([source](https://unit.nginx.org/configuration/))
- [HTTP Timeouts & Limits](https://awesome-repositories.com/f/web-development/global-configuration/http-timeouts-limits.md) — Provides centralized tuning of HTTP timeouts, body size limits, and MIME types for the server. ([source](https://unit.nginx.org/configuration/))
- [JavaScript Expression Routings](https://awesome-repositories.com/f/web-development/request-routing/javascript-expression-routings.md) — Evaluates JavaScript expressions on request properties to dynamically route traffic. ([source](https://unit.nginx.org/scripting/))
- [Static Asset Serving](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-server-capabilities/static-asset-serving.md) — Delivers static files directly from the filesystem without requiring an application runtime. ([source](https://cdn.jsdelivr.net/gh/nginx/unit@master/README.md))
- [Filesystem Static File Servings](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/web-server-capabilities/static-asset-serving/filesystem-static-file-servings.md) — Serves static files directly from the filesystem with index file support and chrooting for security.
- [Popular Web App Configurations](https://awesome-repositories.com/f/web-development/web-server-configurations/popular-web-app-configurations.md) — Configures popular web applications like WordPress, Drupal, and Nextcloud to run on the server. ([source](https://unit.nginx.org/howto/))

### Part of an Awesome List

- [Server TLS Encryption](https://awesome-repositories.com/f/awesome-lists/security/ssl-and-tls/server-tls-encryption.md) — Supports SSL/TLS with SNI, session cache, and tickets using OpenSSL to secure client connections. ([source](https://unit.nginx.org/keyfeatures/))

### Development Tools & Productivity

- [Application Runtimes](https://awesome-repositories.com/f/development-tools-productivity/platforms-runtimes-language-services/development-platforms/execution-runtimes/application-runtimes.md) — Runs application code across multiple programming language runtimes within a single server process. ([source](https://cdn.jsdelivr.net/gh/nginx/unit@master/README.md))
- [Graceful Application Restarts](https://awesome-repositories.com/f/development-tools-productivity/application-identifiers/application-lifecycle-managers/graceful-application-restarts.md) — Restarts applications gracefully, allowing old processes to finish requests while new ones start. ([source](https://unit.nginx.org/configuration/))
- [Request Path Rewriters](https://awesome-repositories.com/f/development-tools-productivity/path-managers/path-modifiers/request-path-rewriters.md) — Modifies request URIs before forwarding, preserving query strings for backend routing. ([source](https://unit.nginx.org/configuration/))

### DevOps & Infrastructure

- [Multi-Language Process Launchers](https://awesome-repositories.com/f/devops-infrastructure/application-process-definitions/multi-language-process-launchers.md) — Launches and manages application processes across multiple language runtimes with configurable isolation. ([source](https://unit.nginx.org/configuration/))
- [Node.js Runtimes](https://awesome-repositories.com/f/devops-infrastructure/deployment-management-strategies/execution-platforms-and-targets/deployment-targets/node-js-runtimes.md) — Serves Node.js applications by specifying the executable and working directory in the configuration. ([source](https://unit.nginx.org/howto/samples/))
- [Application Process Lifecycles](https://awesome-repositories.com/f/devops-infrastructure/graceful-shutdowns/application-shutdown-lifecycles/application-process-lifecycles.md) — Manages starting, stopping, and gracefully restarting application processes across multiple language runtimes.
- [Server-Side WebAssembly Application Hosting](https://awesome-repositories.com/f/devops-infrastructure/cloud-native-orchestration/cloud-native-application-development/webassembly-cloud-native-applications/server-side-webassembly-application-hosting.md) — Runs WebAssembly components compiled from Rust or C as server-side application handlers using the WASI 0.2 interface.
- [Application Server Container Deployments](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/container-runtimes/runtime-configuration-interfaces/docker-socket-orchestrators/docker-target-configurators/docker-container-deployments/application-server-container-deployments.md) — Deploys the application server inside Docker containers for isolated and portable deployments. ([source](https://unit.nginx.org/howto/))
- [Official Docker Images](https://awesome-repositories.com/f/devops-infrastructure/container-orchestration/container-runtimes/runtime-configuration-interfaces/docker-socket-orchestrators/docker-target-configurators/docker-container-deployments/docker-container-execution/repository-built-container-hook-runs/ready-to-run-docker-images/official-docker-images.md) — Provides official Docker images with single-language or minimal configurations for containerized deployments. ([source](https://unit.nginx.org/installation/))
- [API-Triggered](https://awesome-repositories.com/f/devops-infrastructure/restart-automation/process-restarts/api-triggered.md) — Triggers graceful application restarts through the control API without stopping the server. ([source](https://unit.nginx.org/controlapi/))

### Networking & Communication

- [HTTP Request Forwarders](https://awesome-repositories.com/f/networking-communication/http-proxies/proxy-request-routers/http-request-forwarders.md) — Forwards incoming HTTP requests to external servers via IPv4, IPv6, or UNIX sockets. ([source](https://unit.nginx.org/configuration/))
- [HTTP Request Routing](https://awesome-repositories.com/f/networking-communication/http-request-dispatching/http-request-routing.md) — Directs incoming HTTP requests to different handlers based on URL, headers, cookies, or other request properties.
- [REST API Configuration Managers](https://awesome-repositories.com/f/networking-communication/load-balancers/rest-api-configuration-managers.md) — Manages all server configuration dynamically through a RESTful JSON API for zero-downtime updates.
- [REST API Configurations](https://awesome-repositories.com/f/networking-communication/load-balancers/rest-api-configurations.md) — Changes server settings and application deployments on the fly through HTTP API calls without restarts.
- [Runtime Configuration Servers](https://awesome-repositories.com/f/networking-communication/load-balancers/rest-api-configurations/runtime-configuration-servers.md) — Accepts runtime configuration changes through a RESTful JSON API without requiring restarts.
- [Conditional Routing](https://awesome-repositories.com/f/networking-communication/traffic-routing/conditional-routing.md) — Filters requests through match conditions to dispatch to applications, static files, or proxies. ([source](https://unit.nginx.org/configuration/))
- [Dynamic Reverse Proxies](https://awesome-repositories.com/f/networking-communication/http-reverse-proxies/dynamic-reverse-proxies.md) — Routes and proxies HTTP requests to upstream servers with load balancing and URI rewriting.
- [Weighted Load Balancing](https://awesome-repositories.com/f/networking-communication/load-balancers/weighted-load-balancing.md) — Distributes traffic across upstream servers using weighted round-robin load balancing.
- [Advanced Matching Rules](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-routing-traffic-management/request-routing/advanced-matching-rules.md) — Supports regular expressions, response headers, and scripting for complex request matching. ([source](https://unit.nginx.org/keyfeatures/))

### Security & Cryptography

- [Security Isolation Mechanisms](https://awesome-repositories.com/f/security-cryptography/security-isolation-mechanisms.md) — Separates client connections, apps, and static file serving into isolated processes with optional namespace isolation. ([source](https://unit.nginx.org/keyfeatures/))
- [SSL/TLS Certificate Management](https://awesome-repositories.com/f/security-cryptography/cryptography/ssl-tls-certificate-management.md) — Manages SSL/TLS certificates through the control API with support for SNI, session cache, and tickets.
- [TLS Certificate Configuration](https://awesome-repositories.com/f/security-cryptography/tls-certificate-configuration.md) — References an uploaded certificate bundle in a listener's TLS configuration to enable encrypted HTTPS connections. ([source](https://unit.nginx.org/certificates/))

### Software Engineering & Architecture

- [Application Configuration](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/configuration-scopes/application-configuration.md) — Sets per-application options such as environment variables, working directory, user, and group for the runtime. ([source](https://unit.nginx.org/configuration/))
- [Asynchronous Request Processing](https://awesome-repositories.com/f/software-engineering-architecture/asynchronous-request-processing.md) — Processes requests asynchronously using efficient event loops and low-latency IPC for maximum performance. ([source](https://unit.nginx.org/keyfeatures/))
- [Multi-Language Process Isolations](https://awesome-repositories.com/f/software-engineering-architecture/process-isolation-architectures/multi-language-process-isolations.md) — Separates each application runtime into its own OS process for security and stability.
- [Request-Time Variable Substitutions](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/environment-variable-management/environment-variable-injection/environment-variable-substitution/configuration-variable-substitutions/request-time-variable-substitutions.md) — References built-in variables in configuration to dynamically compute request destinations and headers. ([source](https://unit.nginx.org/configuration/))

### System Administration & Monitoring

- [Event-Driven I/O](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/linux-system-administration/networking/connection-lifecycle-management/parallel-network-i-o/event-driven-i-o.md) — Processes requests asynchronously using efficient event loops and low-latency IPC for maximum performance.
- [Server Instance Metrics](https://awesome-repositories.com/f/system-administration-monitoring/instance-administration-tools/instance-operational-metrics/server-instance-metrics.md) — Exposes real-time connection, request, and process statistics via a dedicated read-only API endpoint. ([source](https://unit.nginx.org/statusapi/))
- [Server Status Monitors](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-status-pages/server-status-monitors.md) — Provides a dedicated API endpoint for querying real-time server status and health metrics. ([source](https://unit.nginx.org/))
