Il est impossible de trouver la meilleure publicité pour un grand messager - «le dur Durhard tient la défense et défend la vie privée de ses clients, comme pour sa vie». Mais l'essentiel de ce message n'est pas dans la composante marketing du blocage des télégrammes en Russie. Si votre bot Telegram a cessé de fonctionner et que vous devez restaurer ce travail de toute urgence, bienvenue chez cat.
Hier soir, nous avons rencontré un problème qui devait entrer en collision. Le serveur API de l'un de nos clients était situé à Heroku. Hier, un client mécontent m'a écrit (dans Telegram, bien sûr) que des informations sur le site apparaissent au hasard, alors non. Le site lui-même (une application sur NodeJS) a déjà été transféré au serveur de Moscou à l'avance pour réduire le ping.
Après une demi-heure d'étude du problème, une conclusion simple est arrivée: Roskomnadzor a bloqué une partie des adresses heroku. La rotation des serveurs heroku se produit au niveau DNS et le DNS a parfois donné une IP fonctionnelle, parfois non. Soit dit en passant, il était assez difficile de trouver la cause du problème - lorsque nous avons testé avec les développeurs - il n'y avait aucun problème. Lorsque le client a testé, ils l'ont été. Les réflexions semblaient déjà répondre à l'excellente phrase du développeur du développeur «tout fonctionne sur mon ordinateur».
La solution était assez simple - nous avons transféré le serveur API de l'application sur le serveur client de Saint-Pétersbourg et là, il a été tranquillement déployé. Tout fonctionnait parfaitement, sauf, bien sûr, l'intégration avec Telegram. Étant donné que l'abandon de cette intégration n'est pas possible, car Il n'y a pas d'alternative valable, nous avons commencé à chercher une solution à ce problème. Tout est simple avec le client Telegram natif - il a déjà une interaction intégrée avec un serveur proxy et sa configuration prend quelques secondes. Avec l'API Bot, les choses sont un peu différentes. L'application interagit avec https://api.telegram.org/ pour chaque action du bot Telegram, et cette adresse, bien sûr, est bloquée par l'ILV.
En tant que solution express au problème, il nous est immédiatement venu à l'esprit de connecter le serveur API du client à notre réseau OpenVPN pour contourner ce verrou. La décision a été immédiatement rejetée, la rapidité de réponse laissait beaucoup à désirer. Google et Yandex n'ont pas pu partager avec moi des informations utiles sur la résolution de ce problème.
En conséquence, une pensée simple et évidente est venue à l'esprit: élever vous-même le serveur proxy le plus simple pour vous connecter aux télégrammes. Bien sûr, nous élevons le serveur en dehors de la Fédération de Russie pour que le proxy fonctionne
Ci-dessous, la configuration nginx qui fait maintenant parfaitement son travail
Configuration Nginxserveur {
écouter 80;
nom_serveur my-telegram-proxy.server;
emplacement / {
proxy_set_header X-Forwarded-Host $ host;
proxy_set_header X-Forwarded-Server $ host;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;
proxy_pass https://api.telegram.org/ ;
client_max_body_size 100M;
}
}
Plus loin dans l'application, j'ai remplacé l'URL BOT API pour interagir avec le télégramme - au lieu de
https://api.telegram.org/bot
a écrit
http: //my-telegram-proxy.server/bot
et l'intégration avec Bot Api gagnés avec succès
Pour plus de commodité, j'ai créé un conteneur Docker avec des instructions détaillées pour son utilisation. Cela vous permettra d'augmenter votre proxy de télégramme bot avec une seule commande en quelques secondes
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
Exemple de commande:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
et spécifiez http: // adresse du serveur: 8012 / dans la configuration de l'application. Vous pouvez sélectionner n'importe quel port lors de la saisie d'une commande