NGINX started out as a high performance web-server and quickly expanded adding more functionality in an integrated manner.
Put simply, NGINX is an open source web server, reverse proxy server, cache server, load balancer, media server and much more.
The enterprise version of NGINX has exclusive production ready features on top of what's available, including status monitoring, active health checks, configuration API, and live dashboard for metrics.
Think of this article as a quick introduction to each product but more importantly, as our placeholder for NGINX articles on DevCentral.
If you're interested in NGINX, you can use this article as the place to find DevCentral articles broken down by functionality in the near future.
By the way, this article here has also links to a bunch of interesting articles published on AskF5 and some introductory NGINX videos.
NGINX as a Webserver
The most basic use case of NGINX.
It can handle hundreds of thousands of requests simultaneously by using an event-drive architecture (as opposed to process-driven one) to handle multiple requests within one thread.
NGINX as a Reverse Proxy and Load Balancer
Both NGINX and NGINX+ provide load balancing functionality and work as reverse-proxy by sitting in front of back-end servers:
Similar to F5, traffic comes in, NGINX load balances the requests to different back-end servers.
An API Gateway is a way of abstracting application services interaction from client by providing a single entry-point into the system.
Clients may issue a simple request to the application, for example, by requesting to load some information from a specific product.
In the background, API gateway may contact several different services to bundle up the information requested and fulfil client's request.
NGINX API management module for NGINX Controller can do request routing, composition, applying rate limiting to prevent overloading, offloading TLS traffic to improve performance, authentication, and real-time monitoring and alerting.
NGINX as Application Server (Unit)
NGINX Unit provides all sorts of functionalities to integrate applications and even to migrate and split services out of older monolithic applications.
A key feature of Unit is that we don't need to reload processes once they're reconfigured. Unit only changes part of the memory associated to the changes we made.
In later versions, NGINX Unit can also serve as intermediate node within a web framework, accepting all kinds of traffic and maintaining dynamic configuration and acting as a reverse proxy for back-end servers.
NGINX as WAF
NGINX uses ModSecurity module to protect applications from L7 attacks.
NGINX as Sidecar Proxy Container
We can also use NGINX as side car proxy container in Service Mesh architecture deployment (e.g. using Istio with NGINX as sidecar proxy container).
A service mesh is an infrastructure layer that is supposed to be configurable and fast for the purposes of network-based interprocess communication using APIs.
NGINX can be configured as a Sidecar proxy to handle inter-service communication, monitoring and security-related features.
This is a way of ensuring developers only handle development, support and maintenance while platform engineers (ops team) can handle the service mesh maintenance.