# 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](https://localxpose.gitbook.io/docs/reservations/domain).
{% endhint %}

### Tunnel with custom wildcard domain

First reserve a [wildcard custom domain](https://localxpose.gitbook.io/docs/reservations/domain#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             |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://localxpose.gitbook.io/docs/tunnels/http.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
