Как обойти блокировку Telegram по IP при работе webhook: nginx‑прокси и ngrok

Проблема блокировки Telegram по IP

Многие провайдеры блокируют доступ к Telegram по IP‑адресу. Это особенно критично, если ваш бот использует webhook для получения входящих запросов. В результате Telegram не может доставить обновления, и бот перестаёт работать.

Причины и последствия

  • Провайдер блокирует диапазон IP‑адресов, используемых Telegram.
  • Webhook‑запросы не доходят до вашего сервера.
  • Бот не получает сообщения и команды.

Решения

Использование ngrok

Если вам нужен только быстрый способ отладки бота, ngrok – самый простой вариант. Он создаёт публичный туннель к локальному серверу, обходя любые ограничения провайдера. Однако ngrok подходит только для тестирования, а не для продакшн‑среды.

Прокси на nginx

Для постоянного решения рекомендуется развернуть nginx‑прокси на виртуальном сервере, расположенном в другой стране. Прокси будет принимать запросы от Telegram и пересылать их на ваш локальный сервис 1С.

Преимущества:

  • Постоянный статический IP‑адрес.
  • Независимость от локального провайдера.
  • Гибкая настройка маршрутизации и SSL‑шифрования.

Требования к сервису 1С

Для корректной работы webhook ваш HTTP‑сервис 1С должен:

  • Быть опубликованным на веб‑сервере.
  • Иметь публичный статический IP‑адрес.
  • Обрабатывать POST‑запросы от Telegram.

Шаги по настройке nginx‑прокси

  1. Разверните виртуальный сервер (VPS) в стране, где Telegram не блокируется.
  2. Установите nginx и настройте reverse‑proxy для вашего 1С‑сервиса:
    server {
        listen 80;
        server_name yourdomain.com;
    
        location / {
            proxy_pass http://IP_1C:port/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
        
  3. Получите и настройте SSL‑сертификат (Let’s Encrypt).
  4. В настройках бота укажите URL webhook, указывающий на ваш nginx‑прокси (https://yourdomain.com).
  5. Проверьте, что Telegram успешно доставляет обновления, выполнив curl -I https://api.telegram.org/bot<TOKEN>/getWebhookInfo.

Итог

Если ваш провайдер блокирует Telegram по IP, решение простое: либо используйте ngrok для отладки, либо разверните nginx‑прокси на VPS в другой стране. Главное – ваш сервис 1С должен быть доступен по статическому IP, а webhook‑URL – указывать на прокси. После этого Telegram сможет без проблем доставлять обновления, и ваш бот будет работать стабильно.

Пример настройки