
हल्का एज HTTP(S) सर्वर और रिवर्स प्रॉक्सी जिसमें स्वचालित SSL, Docker/Consul डिस्कवरी, प्रति-रूट प्रमाणीकरण, दर सीमा, और स्वास्थ्य-जांच-आधारित फ़ेलओवर शामिल है।
Reproxy एक सरल एज HTTP(s) सर्वर / रिवर्स प्रॉक्सी है जो विभिन्न प्रदाताओं (डॉकर, स्टैटिक, फ़ाइल, कॉन्सल कैटलॉग) का समर्थन करता है। एक या अधिक प्रदाता अनुरोधित सर्वर, अनुरोधित URL, गंतव्य URL और हेल्थ चेक URL के बारे में जानकारी प्रदान करते हैं। इसे एकल बाइनरी या डॉकर कंटेनर के रूप में वितरित किया जाता है।
सर्वर (होस्ट) को 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.comReproxy एक छोटे स्व-निहित बाइनरी के साथ-साथ डॉकर इमेज के रूप में वितरित किया जाता है। बाइनरी और इमेज दोनों कई आर्किटेक्चर और कई ऑपरेटिंग सिस्टम का समर्थन करते हैं, जिनमें linux_x86_64, linux_arm64, linux_arm, macos_x86_64, macos_arm64, windows_x86_64 और windows_arm शामिल हैं। हम arm64 और x86 deb और rpm पैकेज भी प्रदान करते हैं।
brew install umputun/apps/reproxydocker pull umputun/reproxy या docker pull ghcr.io/umputun/reproxy।नवीनतम स्थिर संस्करण में :vX.Y.Z डॉकर टैग है (:latest उपनाम के साथ) और वर्तमान मास्टर में :master टैग है।
प्रॉक्सी नियम विभिन्न प्रदाताओं द्वारा प्रदान किए जाते हैं। वर्तमान में शामिल हैं - file, docker, static और consul-catalog। प्रत्येक प्रदाता प्रॉक्सी किए गए अनुरोध और स्थिर (संपत्ति) दोनों के लिए कई रूटिंग नियम परिभाषित कर सकता है। उपयोगकर्ता एक ही समय में कई प्रदाता सेट कर सकता है।
विभिन्न प्रदाताओं के उदाहरण examples में देखें
यह सबसे सरल प्रदाता है जो सभी मैपिंग नियमों को सीधे कमांड लाइन (या पर्यावरण) में परिभाषित करता है। कई नियम समर्थित हैं। प्रत्येक नियम 3 से 7 अल्पविराम-पृथक तत्व server,sourceurl,destination[,ping-url[,forward-health-checks[,timeout[,throttle]]]] है। उदाहरण के लिए:
*,^/api/(.*),https://api.example.com/$1 - किसी भी होस्ट/सर्वर पर /api उपसर्ग वाले सभी अनुरोध को https://api.example.com पर प्रॉक्सी करेंexample.com,/foo/bar,https://api.example.com/zzz,https://api.example.com/ping - example.com पर और /foo/bar url वाले सभी अनुरोधों को 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 req/sec का प्रति-रूट थ्रॉटल (पहले के पोज़िशनल फ़ील्ड खाली छोड़े गए)चौथा तत्व वैकल्पिक पिंग url को परिभाषित करता है जिसका उपयोग हेल्थ रिपोर्टिंग के लिए किया जाता है। पाँचवाँ तत्व वैकल्पिक रूप से बैकएंड पर हेल्थ चेक अनुरोधों को अग्रेषित करने को सक्षम करता है (true, yes, 1)। अधिक जानकारी के लिए हेल्थ चेक अनुभाग देखें। छठा तत्व एक वैकल्पिक प्रति-रूट अनुरोध टाइमआउट है (Go अवधि, जैसे 5m, 30s); 0 या खाली वैश्विक --timeout.write सेटिंग प्राप्त करता है। सातवाँ तत्व एक वैकल्पिक प्रति-रूट प्रति उपयोगकर्ता req/sec सीमा है; 0 या खाली --throttle.user प्राप्त करता है। खाली पोज़िशनल फ़ील्ड की अनुमति है (जैसे अप्रयुक्त मध्य फ़ील्ड के लिए ,,)।
यह प्रदाता रूटिंग नियमों के साथ yaml फ़ाइल का उपयोग करता है।
reproxy --file.enabled --file.name=config.yml