
خادم HTTP(S) طرفي خفيف الوزن ووكيل عكسي مع SSL تلقائي، اكتشاف Docker/Consul، مصادقة لكل مسار، تحديد معدل الطلبات، وتحويل الفشل القائم على فحص الصحة.
"? No, it ends with "Example of config.yml:" and then the line ends. That is the end of the chunk. So we translate that.
We must ensure no extra text is added.
Let's produce the translation.
Reproxy هو خادم حافة HTTP(s) بسيط / وكيل عكسي يدعم مزودين متعددين (docker، static، file، consul catalog). يقوم مزود واحد أو أكثر بتوفير معلومات عن الخادم المطلوب، وعنوان URL المطلوب، وعنوان URL الوجهة، وعنوان URL فحص الصحة. يتم توزيعه كملف ثنائي واحد أو كحاوية docker.
يمكن تعيين الخادم (المضيف) كـ FQDN، على سبيل المثال s.example.com، أو * (ملتقط الكل) أو تعبير عادي. المطابقة التامة لها الأولوية، فإذا كانت هناك قاعدتان بخادمين example.com و example\.(com|org)، فإن الطلب إلى example.com/some/url سيطابق الأولى. يمكن أن يكون عنوان URL المطلوب تعبيرًا عاديًا، على سبيل المثال ^/api/(.*)، وقد يحتوي عنوان URL الوجهة على مجموعات مطابقة للتعبير العادي، على سبيل المثال http://d.example.com:8080/$1. في المثال أعلاه، سيتم توجيه طلب http://s.example.com/api/something?foo=bar إلى http://d.example.com:8080/something?foo=bar.
لتسهيل الاستخدام، الطلبات التي تنتهي بـ / وبدون مجموعات تعبير عادي تُوسع إلى /(.*)، والوجهات في تلك الحالات تُوسع إلى /$1. على سبيل المثال /api/ -> http://127.0.0.1/service ستترجم إلى ^/api/(.*) -> http://127.0.0.1/service/$1.
يُدعم استبدال المضيف في عنوان URL الوجهة. على سبيل المثال، سيتم استبدال /files/${host} باسم المضيف المطابق. ويمكن استخدام $host (بدون أقواس) أيضًا.
يُدعم كل من HTTP و HTTPS. بالنسبة لـ HTTPS، يمكن استخدام شهادة ثابتة بالإضافة إلى شهادات ACME الآلية (Let's Encrypt). يمكن استخدام خادم الأصول الاختياري لخدمة الملفات الثابتة. يتطلب بدء تشغيل reproxy تعريف مزود واحد على الأقل. باقي المعلمات اختيارية تمامًا ولها إعدادات افتراضية معقولة.
أمثلة:
reproxy --static.enabled --static.rule="*,example.com/api/(.*),https://api.example.com/$1"reproxy --docker.enabled --docker.autodocker up -p 80:8080 umputun/reproxy --docker.enabled --docker.autodocker up -p 80:8080 -p 443:8443 umputun/reproxy --docker.enabled --docker.auto --ssl.type=auto --ssl.fqdn=example.comيتم توزيع Reproxy كملف ثنائي صغير مكتفي ذاتيًا وكذلك كصورة docker. يدعم كل من الملف الثنائي والصورة معماريات متعددة وأنظمة تشغيل متعددة، بما في ذلك linux_x86_64، linux_arm64، linux_arm، macos_x86_64، macos_arm64، windows_x86_64 و windows_arm. كما نقدم حزم deb و rpm لكل من arm64 و x86.
brew install umputun/apps/reproxydocker pull umputun/reproxy أو docker pull ghcr.io/umputun/reproxy.الإصدار المستقر الأحدث يحمل علامة docker :vX.Y.Z (مع اسم مستعار :latest) والمستودع الحالي يحمل علامة :master.
يتم توفير قواعد الوكيل بواسطة مزودين مختلفين. المزودون المضمنون حالياً - file، docker، static و consul-catalog. يمكن لكل مزود تعريف قواعد توجيه متعددة لكل من الطلب الموكَل والثابت (الأصول). يمكن للمستخدم تعيين مزودين متعددين في نفس الوقت.
راجع أمثلة على مزودين مختلفين في الأمثلة
هذا هو أبسط مزود يحدد جميع قواعد التعيين مباشرة في سطر الأوامر (أو البيئة). يتم دعم قواعد متعددة. كل قاعدة تتكون من 3 إلى 7 عناصر مفصولة بفواصل server,sourceurl,destination[,ping-url[,forward-health-checks[,timeout[,throttle]]]]. على سبيل المثال:
*,^/api/(.*),https://api.example.com/$1 - توجيه جميع الطلبات إلى أي مضيف/خادم ببادئة /api إلى https://api.example.comexample.com,/foo/bar,https://api.example.com/zzz,https://api.example.com/ping - توجيه جميع الطلبات إلى example.com ومسار /foo/bar إلى https://api.example.com/zzz ويستخدم https://api.example.com/ping لفحص الصحة.example.com,/foo/bar,https://api.example.com/zzz,https://api.example.com/ping,true - نفس ما سبق ولكن أيضًا يمرر طلبات /ping و /health إلى الخلفية.example.com,^/upload/(.*),https://api.example.com/$1,,,5m - مهلة زمنية للطلب لكل مسار قدرها 5 دقائق (الحقلان الرابع والخامس يُتركان فارغين لتجاوز ping-url و forward-health-checks).example.com,^/login,https://api.example.com/login,,,,2 - تحديد 2 طلب/ثانية لكل مستخدم لكل مسار (الحقول السابقة تُترك فارغة).العنصر الرابع يحدد عنوان ping اختياري يستخدم لتقرير الصحة. العنصر الخامس يمكّن اختياريًا تمرير طلبات فحص الصحة إلى الخلفية (true، yes، 1). راجع قسم فحص الصحة لمزيد من التفاصيل. العنصر السادس هو مهلة زمنية اختيارية لكل مسار (مدة Go، مثل 5m، 30s)؛ 0 أو فارغ يرث الإعداد العام --timeout.write. العنصر السابع هو حد اختياري لعدد الطلبات/ثانية لكل مستخدم لكل مسار؛ 0 أو فارغ يرث --throttle.user. يُسمح بالحقول الموضعية الفارغة (مثل ,, للحقول الوسطى غير المستخدمة).
يستخدم هذا المزود ملف yaml مع قواعد التوجيه.
reproxy --file.enabled --file.name=config.yml