من المستحيل التوصل إلى أفضل إعلان لمرسل عظيم - "المتشدد دوروف يحمل الدفاع ويدافع عن خصوصية عملائه ، كما هو الحال في حياته". لكن جوهر هذا المنشور ليس في العنصر التسويقي لحظر Telegram في روسيا. إذا توقف روبوت Telegram الخاص بك عن العمل وتحتاج إلى استعادة هذا العمل على وجه السرعة ، مرحبًا بك.
الليلة الماضية واجهنا مشكلة كان من المتوقع أن تصطدم. يقع خادم API لأحد عملائنا في Heroku. بالأمس ، كتب لي عميل ساخط (في Telegram ، بالطبع) أن المعلومات على الموقع تظهر بشكل عشوائي ، ثم لا. تم بالفعل نقل الموقع نفسه (تطبيق على NodeJS) إلى خادم موسكو مسبقًا لتقليل ping.
بعد نصف ساعة من دراسة المشكلة ، تم التوصل إلى استنتاج بسيط: حجبت Roskomnadzor جزءًا من عناوين heroku. يحدث دوران خوادم heroku على مستوى DNS وأحيانًا ما يعطي DNS عنوان IP يعمل ، وأحيانًا لا. بالمناسبة ، كان من الصعب معرفة سبب المشكلة - عندما اختبرنا مع المطورين - لم تكن هناك مشكلة. عندما اختبر العميل ، كانت كذلك. ظهرت أفكار بالفعل للإجابة على عبارة العميل الرائعة للمطور "كل شيء يعمل على جهاز الكمبيوتر الخاص بي".
كان الحل بسيطًا جدًا - لقد نقلنا خادم واجهة برمجة التطبيقات للتطبيق إلى خادم سان بطرسبرغ الخاص بالعميل وتم نشره بهدوء. كل شيء يعمل بشكل مثالي ، باستثناء ، بالطبع ، التكامل مع Telegram. لأن التخلي عن هذا التكامل غير ممكن ، لأنه بدأنا بالبحث عن حل لهذه المشكلة. كل شيء بسيط مع عميل Telegram الأصلي - لديه بالفعل تفاعل مدمج مع خادم وكيل ويستغرق إعداده بضع ثوانٍ. مع API Bot ، تكون الأشياء مختلفة قليلاً. يتفاعل التطبيق مع https://api.telegram.org/ لكل إجراء من إجراءات Telegram ، وهذا العنوان محظور بالطبع من قبل ILV.
كحل سريع للمشكلة ، حدث لنا فورًا توصيل خادم API للعميل بشبكة OpenVPN لتجاوز هذا القفل. تم رفض القرار على الفور ، كما تركت سرعة الاستجابة الكثير مما هو مرغوب فيه. تعذر على Google و Yandex مشاركة معلومات مفيدة معي حول حل هذه المشكلة.
ونتيجة لذلك ، فكرت في ذهني فكرة بسيطة وواضحة - لرفع أبسط خادم وكيل لوحدك للاتصال ببرقيات. بالطبع ، نرفع الخادم خارج الاتحاد الروسي بحيث يعمل الوكيل
فيما يلي تكوين nginx الذي يقوم الآن بعمله على أكمل وجه
تكوين Nginxالخادم {
الاستماع 80 ؛
اسم الخادم my-telegram-proxy.server ؛
الموقع / {
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 ؛
}}
}}
كذلك في التطبيق ، قمت باستبدال URL BOT API للتفاعل مع البرقية - بدلاً من
https://api.telegram.org/bot
كتب
http: //my-telegram-proxy.server/bot
والتكامل مع Bot Api المكتسبة بنجاح
لمزيد من الراحة ، قمت بإنشاء حاوية عامل إرساء مع تعليمات مفصلة لاستخدامها. سيسمح لك هذا برفع وكيل برقية برقية مع أمر واحد في ثوان
https://hub.docker.com/r/zvinger/docker-proxy-rkn/builds/
مثال القيادة:
docker run -d -p 8012:80 zvinger/docker-proxy-rkn
وحدد http: // server address: 8012 / في تكوين التطبيق. يمكنك تحديد أي منفذ عند إدخال أمر