> For the complete documentation index, see [llms.txt](https://localxpose.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://localxpose.gitbook.io/docs/tunnels/http.md).

# HTTP/s

HTTP tunnels allows you to expose your local web servers to the internet, you will be given a shareable URL that is accessible from the internet, This tunnel will be running in HTTP/s.

> *Example:*\
> *Creating HTTP tunnel with random subdomain in United State and forward the traffic by default to 127.0.0.1:8080*

```
loclx tunnel http
```

If the domain is `sub.loclx.io` then LocalXpose servers will do the TLS termination and forward the traffic for you through secure tunnel, if you use your own custom domain like `example.com` then LocalXpose will generate Let's Encrypt certificate for you automatically and your tunnel will be end-to-end encrypted.

For every HTTP connection from the public internet to your machine, a header `X-Forwarded-For` and `X-Real-Ip` will be added to the headers so you can get the real IP address of your clients.

## Usage

### Tunnel with custom temporary subdomain

```
loclx tunnel http --subdomain hello
```

### Tunnel with custom reserved domain or subdomain

```
loclx tunnel http --reserved-domain hello.example.com 
# or hello.loclx.io or '*.example.com'
```

{% hint style="info" %}
Make sure to reserve the domain before using it, check [here](/docs/reservations/domain.md).
{% endhint %}

### Tunnel with custom wildcard domain

First reserve a [wildcard custom domain](/docs/reservations/domain.md#wildcard-custom-domain), for this example we will assume our wildcard domain is `*.example.com`, you can run HTTP/s tunnel with any subdomain of the mentioned wildcard domain (e.g. `api.example.com` or `dev.example.com`...etc)

```
loclx tunnel http --reserved-domain api.example.com
```

You can also run the tunnel with the wildcard domain itself:

```
loclx tunnel http --reserved-domain '*.example.com'
```

This will start HTTP/s tunnel with the wildcard custom domain `*.example.com`, you will be able to access it through the internet using:

* sub.example.com
* sub1.sub2.example.com
* sub1.sub2.sub3.example.com
* ..etc

{% hint style="info" %}
example.com itself will not be tunneled to your wildcard custom domain, it needs to be reserved too and create a separate tunnel for it.
{% endhint %}

You can reserve multiple wildcard custom domains for the same domain name for example you can reserve `*.example.com`, `*.uat.example.com` and `*.test.example.com`.

The precedence here will be for the nearest match for example:

| Public URL                                                                             | Matched Tunnel       |
| -------------------------------------------------------------------------------------- | -------------------- |
| <p>sub.example.com<br>uat.example.com<br>test.example.com<br>sub1.sub2.example.com</p> | `*.example.com`      |
| <p>sub.uat.example.com<br>sub1.sub2.uat.example.com</p>                                | `*.uat.example.com`  |
| <p>sub.test.example.com<br>sub1.sub2.test.example.com</p>                              | `*.test.example.com` |
| example.com                                                                            | No match             |
