NGINX Unit

Key features§

From the start, our vision for Unit was versatility, speed, and reliability. Here’s how we tackle these goals.

Flexibility§

Performance§

  • Requests are asynchronously processed in threads with efficient event loops (epoll, kqueue).
  • Syscalls and data copy operations are kept to a necessary minimum.
  • 10,000 inactive HTTP keep-alive connections take up only a few MBs of memory.
  • Router and app processes rely on low-latency IPC built with lock-free queues over shared memory.
  • Built-in statistics provide insights into Unit’s performance.
  • The number of per-app processes is defined statically or scales preemptively within given limits.
  • App and instance usage statistics are collected and exposed via the API.
  • Multithreaded request processing is supported for Java, Perl, Python, and Ruby apps.

Security & robustness§

  • Client connections are handled by a separate non-privileged router process.
  • Low-resource conditions (out of memory or descriptors) and app crashes are handled gracefully.
  • SSL/TLS with SNI, session cache and tickets is integrated (OpenSSL 1.0.1 and later).
  • Different apps are isolated in separate processes.
  • Apps can be additionally containerized with namespace and file system isolation.
  • Static file serving benefits from chrooting, symlink and mount point traversal restrictions.

Supported app languages§

Unit interoperates with: