← Усі нотатки

Нотатка · Проксі

HTTPS CONNECT: чому потрібно явно вказувати порт

У Telegram:

Зовнішній проксі працював. Окрема перевірка успішно проходила TLS, авторизацію, публічний HTTPS і DNS.

Але Transparent Gateway не додавав його до активного пулу.

Перед додаванням кожного проксі validator перевіряє, чи може той передавати реальні запити. Для HTTPS він просить проксі відкрити тунель до потрібного сервера за допомогою команди CONNECT.

Validator надсилав такий запит:

CONNECT echo.devdays.net.ua HTTP/1.1

Тут указаний домен, але немає порту.

Домен echo.devdays.net.ua визначає сервер, а порт 443 — HTTPS-сервіс на ньому. Без порту проксі отримує неповну адресу й не знає, куди саме відкривати тунель.

Правильний запит:

CONNECT echo.devdays.net.ua:443 HTTP/1.1

Окрема перевірка проксі додавала :443, тому працювала. Validator цього не робив, тому проксі правильно відхиляв його запит.

Виправлення звелося до простого правила: під час створення CONNECT завжди додавати порт, навіть якщо він стандартний для HTTPS.

Після виправлення validator надіслав правильну адресу:

echo.devdays.net.ua:443

Зовнішній проксі пройшов перевірку й потрапив до активного пулу:

active: 2
validated: 2

Тепер у gateway є два перевірені маршрути: локальний проксі для лабораторного echo-сервісу та зовнішній — для публічного HTTPS і DNS ✅