> ## Documentation Index
> Fetch the complete documentation index at: https://developers.telnyx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ingress

> Each Network has one ingress that receives requests for every private function on it and hands each request to the right function.

The ingress receives requests from the [*Network*](https://developers.telnyx.com/docs/network/overview.md) and hands each one to a function. Each *Network* has one ingress, and every function on it with `ingress = true` sits behind that one address.

* The ingress accepts HTTP on port 80.
* The ingress is a peer of the WireGuard Interface named in the binding, called `ingress-<id>`.
* The first function with `ingress = true` on a *Network* creates the ingress, and deleting the last one removes it. Functions in between join and leave without interrupting the others.

## Selecting the Function

The `Host` header names the function. It carries the function's [private name](https://developers.telnyx.com/docs/edge-compute/private-ingress/how-it-works/private-names.md), or its public host name, which the ingress also accepts.

A `Host` with no function behind it returns `404` with the body `no private function is bound to this host`.

## Forwarding Headers

The function receives two forwarding headers.

| Header | Value |
| - | - |
| `X-Forwarded-For` | Starts with the address of the host that sent the request, as the *Network* sees it |
| `X-Forwarded-Host` | The name the request was sent to |
