HTTP туннель
Обзор
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 код и напечатан в консоли. Это может быть удобно если вы тестируете сайт на мобильном устройстве.

Политики трафика
Флаг --policy-file
указывает путь файлу конфигурации с правилами (по умолчанию .tuna.yml
).
CORS
Флаг --cors
или переменная TUNA_CORS=true
, добавит CORS заголовки ко всем ответам. По умолчанию выставляются следующие заголовки:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Accept, Accept-Language, Content-Language, Origin
Access-Control-Allow-Methods: GET, HEAD, POST
Access-Control-Allow-Origin: *
Их можно переопределить с помощью флага --response-header
.
Запросы типа OPTIONS обрабатываются автоматически 200 OK
, не доходя до проксируемого сервера.
Поведение
Hop-by-hop
tuna не поддерживает hop-by-hop заголовки за исключением заголовка Connection: upgrade
, необходимого для рабо ты Websocket соединений.
Server-sent events
tuna поддерживает технологию отправки уведомлений от сервера к веб-браузеру, никакие дополнительные настройки не требуются. Передаваемые данные не будут отображены в инспекторе.
HTTP и HTTPS
При старте туннеля отображается ссылка на HTTPS, но обращаться можно и по HTTP. Запретить обращение по HTTP можно добавив флаг --https-redirect
.
Порядок обработки флагов и правил
Флаги влияющие на поведение обработки трафика всегда выполняются в определённой последовательности, вне зависимости от того в какой очерёдности они переданы в аргументах.