HTTP туннель
HTTP туннели работают на всех тарифных планах, но на бесплатном тарифе доступны только туннели с динамически выделяемым именем и ограничены работой в 30 минут.
Обзор
HTTP туннель позволяет предоставить доступ к сайту, API, GraphQL и Websocket-серверам.
Примеры
Все актуальные флаги, подсказки и примеры можно посмотреть вызвав справку:
tuna http --help
Почти для всех флагов есть аналогичные переменные окружения.
Базовый пример
Запуск туннеля с динамическим именем.
tuna http 8080
С передачей IP-адреса или Host
tuna http 10.0.0.1:8080
tuna http localhost:8080
Подключение к HTTPS ресурсу
tuna http https://localhost:443
Если нужно проверять валидность сертификата, то укажите --tls-skip-verify=false
, по умолчанию принимается любой самоподписанный сертификат.
С зарезервированным поддоменом
Доступно только по подписке.
Можно резервировать адреса и после перезапуска туннеля адрес останется прежним:
tuna http 8080 --subdomain=billing
В unix системах также можно использовать переменную окружения TUNA_SUBDOMAIN
:
TUNA_SUBDOMAIN="billing" tuna http 8080
Если вы видите ошибку Domain already reserved
, значит домен в этой локации уже занят другим пользователем, попробуйте другое имя.
tuna http 8080 --subdomain=any-you-name
Резервирование происходит автоматически при добавлении аргумента. Все зарезервированные вами домены можно посмотреть в личном кабинете.
С собственным доменом
Добавьте свой домен следуя инструкциям в личн ом кабинете, после проверки DNS и выпуска Let's Encrypt сертификата можно пользоваться:
tuna http 8080 --domain=my-api-project.example.com
Есть подробная статья - Подключение своего домена.
Перенаправление на HTTPS
Запретить обращение по HTTP можно добавив флаг --https-redirect
.
Файловый сервер
tuna http --file-server ./
Хостинг статичного SPA сайта
Хостинг одностраничных приложений:
tuna http --file-server-spa ./
WebDAV сервер
tuna http --webdav ./
Изменение заголовков запроса
Добавление заголовка перед тем, как запрос попадет в локальный сервис:
tuna http 8080 --request-header="host:tuna.am"
Изменение заголовков ответа
Добавление заголовка для передачи клиенту (пользователю):
tuna http 8080 --response-header="env:test"
Защита базовой аутентификацией
tuna http 8080 --basic-auth="login:password"
Защита API токеном
tuna http 8080 --key-auth="my-secret-key"
Доступ к ресурсу будет предоставлен только в том случае, если будет передано корректное значение заголовка X-Token
.
Rate limiter
Ограничение по числу запросов в секунду, попадаемых в ваш сервис:
tuna http 8080 --rate-limit=2
При достижении лимита будет возвращена ошибка 429 Too Many Requests
.
Ограничение доступа по подсетям IP
Вы можете определить белый список подсетей в CIDR-формате:
tuna http 8080 --cidr-allow="10.0.0.1/32"
Либо запретить доступ из определенных подсетей:
tuna http 8080 --cidr-deny="10.0.0.1/32"
Ограничение доступа по User-Agent
Запретить доступ с конкретного user-agent и разрешить со всех остальных, совпадение по подстроке:
--ua-deny=curl
Разрешить доступ с конкретного user-agent и запретить со всех остальных, совпадение по подстроке:
--ua-allow=Chrome
Верификация входящих Webhooks
tuna http 8080 --verify-webhook=gitlab --verify-webhook-secret=1234
С указанием токена
Можно указать специфичный токен через флаг --token
или переменную окружения TUNA_TOKEN
. Переопределение происходит в соответствии с политикой очерёдности конфигурации.
tuna http 8080 --token=tt_***
С указанием региона для подключения
Можно указать специфичный регион через флаг --location
/-l
или переменную окружения TUNA_LOCATION
. Переопределение происходит в соответствии с политикой очерёдности конфигурации.
tuna http 8080 --location=nl
Генерация QR кода с ссылкой
При добавлении флага --qr
для ссылки будет сгенерирован QR код и напечатан в консоли. Это может быть удобно если вы тестируете сайт на мобильном устройстве.
