раздел 03

Как организовать на практике

Соберём всё в рабочую схему: зарубежный VPS с forward-прокси, доступ к нему по whitelist и приложение на российском сервере, которое ходит к API через этот прокси. Все адреса, порты и логины ниже - плейсхолдеры. Подставляйте свои значения.

1
Поднять зарубежный VPS
Нужен сервер в стране, откуда доступ к API разрешён. Подойдёт небольшой инстанс - трафик к API лёгкий. Как создать сервер - в гайде про DigitalOcean.
2
Поставить forward-прокси
На этом VPS ставим tinyproxy или squid и настраиваем порт и доступ только для вашего российского сервера.
3
Направить трафик приложения через прокси
На российском сервере (например, Selectel) задаём переменные окружения или настраиваем прокси в SDK.

Шаг 1. Зарубежный VPS

Возьмите самый недорогой инстанс у зарубежного провайдера. Запросы к LLM API нетяжёлые, мощный сервер не нужен. Пошагово про создание сервера - в гайде про DigitalOcean.

Запишите публичный IP этого VPS - его вы будете указывать приложению как адрес прокси. В примерах ниже это 203.0.113.10.

Шаг 2. Forward-прокси с доступом по whitelist

Поставьте на VPS прокси-софт. Два рабочих варианта - tinyproxy (лёгкий, простой конфиг) и squid (мощнее, больше возможностей). Для задачи "пропустить запросы к API" хватает tinyproxy.

Минимальный конфиг tinyproxy выглядит примерно так (плейсхолдеры - замените на своё):

# tinyproxy.conf - пример с плейсхолдерами
Port 3128
Listen 0.0.0.0

# доступ только с IP вашего российского сервера
Allow YOUR_RF_SERVER_IP

# не открывать прокси всему интернету:
# никаких Allow 0.0.0.0/0 и публичных диапазонов

Ключевой момент - директива Allow. В ней указывается только IP вашего российского сервера, которому разрешено пользоваться прокси. Всем остальным доступ закрыт. Если прокси без whitelist - его быстро найдут и начнут гонять через него чужой трафик.

После правки конфига перезапустите сервис и проверьте, что порт слушается и доступен только с вашего адреса.

Шаг 3. Подключить приложение

На российском сервере (например, на Selectel) направьте трафик приложения через прокси. Самый универсальный способ - переменные окружения HTTP_PROXY и HTTPS_PROXY. Большинство HTTP-клиентов и SDK читают их автоматически.

# .env или окружение процесса - плейсхолдеры
HTTP_PROXY=http://203.0.113.10:3128
HTTPS_PROXY=http://203.0.113.10:3128

# если без аутентификации - так; с логином/паролем формат:
# HTTPS_PROXY=http://USER:PASSWORD@203.0.113.10:3128

Если клиент не подхватывает переменные окружения, прокси задают прямо в SDK. Например, для Node-клиента это обычно отдельный параметр транспорта или http-агент:

// псевдокод - смысл, а не точный API конкретного SDK
const client = new SomeLLMClient({
  apiKey: process.env.LLM_API_KEY,
  httpAgent: makeProxyAgent("http://203.0.113.10:3128"),
});

После настройки сделайте один тестовый запрос к API и убедитесь, что ответ приходит. Если до этого запрос блокировался по IP, а теперь проходит - прокси работает.