# Expose public endpoints

## Publicly exposing endpoints

A single port (and path) can be exposed as the "main" entry point for an application.

This means that only one port will be exposed to 443 for users to be able to access through HTTPS.

![](https://1816776994-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MlP4CN7wxbqd_3NdM99%2Fuploads%2FYb4ZWd3fXK9x5Uwi7Wyf%2Fimage.png?alt=media\&token=e4dabd28-d0d0-442d-81d1-751fc711e388)

{% hint style="info" %}
You can expose multiple ports, as long as they use the HTTP protocol. You can also map them to different paths for the Ingress.
{% endhint %}

{% hint style="info" %}
Entries contained in **`components.SERVICE_NAME[*].hosts`** will be written in the Ingress of the namespace in Kubernetes.
{% endhint %}

## Generated URLs

As you can see in the above screenshot, the URL for the backend is something similar to `backend-7avg6c.bunnyenv.com`.

The `7avg6c` part represents the Environment unique identifier within the Bunnyshell system.

{% hint style="success" %}
**Best-practice**: If you want to create a template for the environment, you can use `{{env.unique}}` as a replacement, when using the URL in other places, such as Component Variables. This will enable other Services, such as the `frontend` (for the API URL) to communicate with the `backend`.

**Example**: `backend-{{env.unique}}.bunnyenv.com`
{% endhint %}

## DNS Records and HTTPS

Bunnyshell automatically creates DNS records and handles certificates for you.

{% hint style="success" %}
This is done through the use of [Cloudflare](https://www.cloudflare.com/en-gb/).
{% endhint %}
