{"id":37681284,"url":"https://github.com/thetechnick/nginx-ingress","last_synced_at":"2026-01-16T12:25:05.635Z","repository":{"id":57522655,"uuid":"103021741","full_name":"thetechnick/nginx-ingress","owner":"thetechnick","description":"Kubernetes nginx ingress controller","archived":false,"fork":false,"pushed_at":"2018-03-20T13:06:21.000Z","size":295,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-20T03:32:50.459Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thetechnick.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-10T10:42:47.000Z","updated_at":"2018-03-20T13:04:31.000Z","dependencies_parsed_at":"2022-08-30T04:20:43.378Z","dependency_job_id":null,"html_url":"https://github.com/thetechnick/nginx-ingress","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/thetechnick/nginx-ingress","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetechnick%2Fnginx-ingress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetechnick%2Fnginx-ingress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetechnick%2Fnginx-ingress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetechnick%2Fnginx-ingress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thetechnick","download_url":"https://codeload.github.com/thetechnick/nginx-ingress/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thetechnick%2Fnginx-ingress/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T12:25:05.541Z","updated_at":"2026-01-16T12:25:05.630Z","avatar_url":"https://github.com/thetechnick.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ingress Controller\n\nThis repository provides an implementation of an Ingress controller for NGINX. It is based on the work done by the NGINX team [nginxinc/kubernetes-ingress repo](https://github.com/nginxinc/kubernetes-ingress), different from the NGINX Ingress controller in [kubernetes/ingress repo](https://github.com/kubernetes/ingress) and provides more features.\n\n## What is Ingress?\n\nAn Ingress is a Kubernetes resource that lets you configure an HTTP load balancer for your Kubernetes services. Such a load balancer usually exposes your services to clients outside of your Kubernetes cluster. An Ingress resource supports:\n* Exposing services:\n    * Via custom URLs (for example, service A at the URL `/serviceA` and service B at the URL `/serviceB`).\n    * Via multiple host names (for example, `foo.example.com` for one group of services and `bar.example.com` for another group).\n* Configuring SSL termination for each exposed host name.\n\nSee the [Ingress User Guide](http://kubernetes.io/docs/user-guide/ingress/) to learn more.\n\n## What is an Ingress Controller?\n\nAn Ingress controller is an application that monitors Ingress resources via the Kubernetes API and updates the configuration of a load balancer in case of any changes. Different load balancers require different Ingress controller implementations. Typically, an Ingress controller is deployed as a pod in a cluster. In the case of software load balancers, such as NGINX, an Ingress controller is deployed in a pod along with a load balancer.\n\nSee https://github.com/kubernetes/contrib/tree/master/ingress/controllers/ to learn more about Ingress controllers and find out about different implementations.\n\n## NGINX Ingress Controller\n\nWe provide an Ingress controller for NGINX that supports the following Ingress features:\n* SSL termination\n* Path-based rules\n* Multiple host names\n\nThese extensions are provided:\n* [Websocket](docs/websocket), which allows you to load balance Websocket applications.\n* [SSL Services](docs/ssl-services), which allows you to load balance HTTPS applications.\n* [Rewrites](docs/rewrites), which allows you to rewrite the URI of a request before sending it to the application.\n\nAdditional extensions as well as a mechanism to customize NGINX configuration are available.\nSee [docs/customization](docs/customization).\n\n## Components\n\n### LBC - Load balancer controller\n\nThe lbc [quay.io/nico_schieder/ingress-lbc](https://quay.io/repository/nico_schieder/ingress-lbc) runs the main control loop that watches the Kubernetes API, validates and generates NGINX configuration files and reports these errors as events on the affected resources. It can be deployed in a server-agent mode using etcd v3 as persistent backend or standalone.\n\n### Agent\n\nThe agent [quay.io/nico_schieder/ingress-agent](https://quay.io/repository/nico_schieder/ingress-agent) takes rendered NGINX configuration files from etcd and reconfigures NGINX to use this configuration. If etcd is unavailable the agent will keep using the last configuration and resync automatically after etcd is available again.\n\n## Deployment Modes\n\n### Server-Agent Mode\n\nWhen using the agent deployment you only run a single instance of the load balancer controller (lbc) which generates NGINX configuration and stores them in etcd. Multiple agent instances are watching the configuration in etcd and apply these configuration files to NGINX.\n\nIn this mode you can freely scale the number of agent instances and not apply more pressure on the Kubernetes API.\nBecause the configuration is persistent in etcd you are free to update/restart the lbc deployment, of cause while the lbc is down service endpoints and changes to the ingress configuration will not be updated.\n\nOnly etcd version 3 and above is supported.\nYou find a example deployment here: [agent-deployment](docs/agent-deployment.yml)\n\n### Standalone\n\nIn this mode the lbc also runs an embedded agent, so a etcd deployment is not necessary. If you just want to test this ingress controller, this would be the simpler way.\n\n**Drawbacks**\n- each instance watches the Kubernetes API, applying pressure to the masters\n- each instance reports the same errors and warnings\n\nYou find a example deployment here: [standalone-deployment](docs/standalone-deployment.yml)\n\n### Using Multiple  Ingress Controllers\n\n#### Using different implementations\n\nYou can run multiple different Ingress controllers at the same time. For example, if your Kubernetes cluster is deployed in cloud, you can run the NGINX controller and the corresponding cloud HTTP load balancing controller. Refer to the [example](docs/multiple-ingress-controllers) to learn more.\n\n#### Using multiple separated instances of this ingress controller\n\nIf you want to run multiple instances of this ingress controller you can use the flag `-selector` to filter ingresses by its labels. This feature can be used to separate restricted services from public ones by binding to different IP addresses, so you can use normal firewall rules to restrict traffic.\nThe flag supports the same format as `kubectl get ing --selector`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthetechnick%2Fnginx-ingress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthetechnick%2Fnginx-ingress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthetechnick%2Fnginx-ingress/lists"}