This repo provides an implementation of an Ingress Controller for NGINX and NGINX Plus from the people behind NGINX.
We value community input and would love to see you at the next community call. At these calls, we discuss PRs by community members as well as issues, discussions and feature requests.
Microsoft Teams Link:
Meeting ID: 298 140 979 789
Passcode: jpx5TM
Slack: Join our channel #nginx-ingress-controller on the for updates and discussions.
When: 15:00 GMT / , every other Monday.
| Community Call Dates |
|---|
| 2025-01-13 |
| 2025-01-27 |
| 2025-02-10 |
| 2025-02-24 |
| 2025-03-11 |
| 2025-03-24 |
NGINX Ingress Controller works with both NGINX and NGINX Plus and supports the standard Ingress features - content-based routing and TLS/SSL termination.
Additionally, several NGINX and NGINX Plus features are available as extensions to the Ingress resource via annotations and the ConfigMap resource. In addition to HTTP, NGINX Ingress Controller supports load balancing Websocket, gRPC, TCP and UDP applications. See and docs to learn more about the supported features and customization options.
As an alternative to the Ingress, NGINX Ingress Controller supports the VirtualServer and VirtualServerRoute resources. They enable use cases not supported with the Ingress resource, such as traffic splitting and advanced content-based routing. See .
TCP, UDP and TLS Passthrough load balancing is also supported. See the .
Read to learn more about NGINX Ingress Controller with NGINX Plus.
Note
This project is different from the NGINX Ingress Controller in repo. See to find out about the key differences.
The Ingress is a Kubernetes resource that lets you configure an HTTP load balancer for applications running on Kubernetes, represented by one or more . Such a load balancer is necessary to deliver those applications to clients outside of the Kubernetes cluster.
The Ingress resource supports the following features:
- Content-based routing:
- Host-based routing. For example, routing requests with the host header
foo.example.comto one group of services and the host headerbar.example.comto another group. - Path-based routing. For example, routing requests with the URI that starts with
/serviceAto service A and requests with the URI that starts with/serviceBto service B.
- Host-based routing. For example, routing requests with the host header
- TLS/SSL termination for each hostname, such as
foo.example.com.
See the to learn more about the Ingress resource.
The Ingress Controller is an application that runs in a cluster and configures an HTTP load balancer according to Ingress resources. The load balancer can be a software load balancer running in the cluster or a hardware or cloud load balancer running externally. Different load balancers require different Ingress Controller implementations.
In the case of NGINX, the Ingress Controller is deployed in a pod along with the load balancer.
Note
All documentation should only be used with the latest stable release, indicated on of the GitHub repository.
- Install NGINX Ingress Controller using the or the Kubernetes .
- Configure load balancing for a simple web application:
- Use the Ingress resource. See the .
- Or the VirtualServer resource. See the example.
- See additional configuration .
- Learn more about all available configuration and customization in the docs.
We publish NGINX Ingress Controller releases on GitHub. See our .
The latest stable release is . For production use, we recommend that you choose the latest stable release.
The edge version is useful for experimenting with new features that are not yet published in a stable release. To use it, choose the edge version built from the from the main branch.
To use NGINX Ingress Controller, you need to have access to:
- An NGINX Ingress Controller image.
- Installation manifests or a Helm chart.
- Documentation and examples.
It is important that the versions of those things above match.
The table below summarizes the options regarding the images, Helm chart, manifests, documentation and examples and gives your links to the correct versions:
| Version | Description | Image for NGINX | Image for NGINX Plus | Installation Manifests and Helm Chart | Documentation and Examples |
|---|---|---|---|---|---|
| Latest stable release | For production use | Use the 4.0.0 images from , , or or . | Use the 4.0.0 images from the or . | . . | Documentation. . |
| Edge/Nightly | For testing and experimenting | Use the edge or nightly images from , , or or . | . | . . | . . |
We generate SBOMs for the binaries and the Docker images.
The SBOMs for the binaries are available in the releases page. The SBOMs are generated using and are available in SPDX format.
The SBOMs for the Docker images are available in the , , or repositories. The SBOMs are generated using and stored as an attestation in the image manifest.
For example to retrieve the SBOM for linux/amd64 from Docker Hub and analyze it using
you can run the following command:
docker buildx imagetools inspect nginx/nginx-ingress:edge --format '{{ json (index .SBOM "linux/amd64").SPDX }}' | grypeWe’d like to hear your feedback! If you have any suggestions or experience issues with our Ingress Controller, please create an issue or send a pull request on GitHub. You can contact us directly via .
If you'd like to contribute to the project, please read our .
For NGINX Plus customers NGINX Ingress Controller (when used with NGINX Plus) is covered by the support contract.