
pingap v0.13.8
nginx जैसा रिवर्स प्रॉक्सी, pingora पर निर्मित, सरल और कुशल।
pingap
pingap संस्करण स्थिर होने से पहले, कोई भी pull request स्वीकार नहीं किया जाएगा। यदि आपके कोई प्रश्न हैं, तो कृपया पहले एक नया issue बनाएं।

अवलोकन
Pingap एक उच्च-प्रदर्शन रिवर्स प्रॉक्सी है जो Cloudflare Pingora द्वारा संचालित है। यह संक्षिप्त TOML फ़ाइलों और एक सहज वेब एडमिन इंटरफ़ेस के माध्यम से गतिशील, शून्य-डाउनटाइम कॉन्फ़िगरेशन हॉट-रीलोडिंग को सक्षम करके परिचालन प्रबंधन को सरल बनाता है।
इसकी मुख्य ताकत एक शक्तिशाली प्लगइन सिस्टम में निहित है, जो प्रमाणीकरण (JWT, Key Auth), सुरक्षा (CSRF, IP/Referer/UA प्रतिबंध), ट्रैफ़िक नियंत्रण (दर सीमित करना, कैशिंग), सामग्री संशोधन (रीडायरेक्ट, सामग्री प्रतिस्थापन), और अवलोकनशीलता (Request ID) के लिए बीस से अधिक तैयार-से-उपयोग सुविधाएँ प्रदान करता है। यह Pingap को केवल एक प्रॉक्सी नहीं, बल्कि एक लचीला और विस्तारणीय एप्लिकेशन गेटवे बनाता है, जिसे API सुरक्षा से लेकर आधुनिक वेब एप्लिकेशन परिनियोजन तक जटिल परिदृश्यों को सहजता से संभालने के लिए इंजीनियर किया गया है।
中文说明 | Documentation · 中文文档 | Examples | Plugins | Crates
flowchart LR
internet("Internet") -- request --> pingap["Pingap"]
pingap -- proxy:pingap.io/api/* --> apiUpstream["10.1.1.1,10.1.1.2"]
pingap -- proxy:cdn.pingap.io --> cdnUpstream["10.1.2.1,10.1.2.2"]
pingap -- proxy:/* --> upstream["10.1.3.1,10.1.3.2"]
मुख्य विशेषताएँ
-
🚀 उच्च प्रदर्शन और विश्वसनीयता
- मेमोरी सुरक्षा और शीर्ष-स्तरीय प्रदर्शन के लिए Rust के साथ निर्मित।
- Cloudflare Pingora द्वारा संचालित, एक परीक्षित अतुल्यकालिक नेटवर्किंग लाइब्रेरी।
- HTTP/1.1, HTTP/2, और gRPC-web प्रॉक्सीिंग का समर्थन करता है।
-
🔧 गतिशील और उपयोग में आसान
- हॉट-रीलोडिंग के साथ शून्य-डाउनटाइम कॉन्फ़िगरेशन परिवर्तन।
- सरल, मानव-पठनीय TOML कॉन्फ़िगरेशन फ़ाइलें।
- सहज, वास्तविक-समय प्रबंधन के लिए पूर्ण-सुविधा वाला Web UI।
- कॉन्फ़िगरेशन बैकएंड के रूप में फ़ाइल और etcd दोनों का समर्थन करता है।
- कॉन्फ़िगरेशन इतिहास रिकॉर्ड का समर्थन करता है, एक क्लिक में इतिहास संस्करण पर पुनर्स्थापित कर सकता है।
-
🧩 शक्तिशाली विस्तारणीयता
- सामान्य गेटवे कार्यों को संभालने के लिए एक समृद्ध प्लगइन सिस्टम।
- host, path, और regex मिलान के साथ उन्नत रूटिंग।
- स्थिर सूचियों, DNS, या Docker लेबल के माध्यम से अंतर्निहित सेवा खोज।
- Let's Encrypt के साथ स्वचालित HTTPS (HTTP-01 और DNS-01 दोनों चुनौतियों का समर्थन करता है)।
-
📊 आधुनिक अवलोकनशीलता
- निगरानी के लिए मूल Prometheus मेट्रिक्स (pull और push मोड)।
- वितरित ट्रेसिंग के लिए एकीकृत OpenTelemetry समर्थन।
- 30 से अधिक वेरिएबल्स के साथ अत्यधिक अनुकूलन योग्य एक्सेस लॉग।
- JA4 TLS क्लाइंट फ़िंगरप्रिंट (एक्सेस लॉग में
{:ja4}, अपस्ट्रीम हेडर में$ja4) क्लाइंट को उनके TLS स्टैक द्वारा अलग करने के लिए, OpenSSL और rustls बिल्ड दोनों पर। - विस्तृत प्रदर्शन मेट्रिक्स, जिसमें अपस्ट्रीम कनेक्ट समय, प्रसंस्करण समय, और बहुत कुछ शामिल है।
🚀 शुरुआत करना
Pingap के साथ शुरुआत करने का सबसे आसान तरीका Docker Compose का उपयोग करना है।
- एक
docker-compose.ymlफ़ाइल बनाएं:
# docker-compose.yml
version: '3.8'
services:
pingap:
image: vicanso/pingap:latest # For production, use a specific version like vicanso/pingap:0.12.1-full
container_name: pingap-instance
restart: always
ports:
- "80:80"
- "443:443"
volumes:
# Mount a local directory to persist all configurations and data
- ./pingap_data:/opt/pingap
environment:
# Configure using environment variables
- PINGAP_CONF=/opt/pingap/conf
- PINGAP_ADMIN_ADDR=0.0.0.0:80/pingap
- PINGAP_ADMIN_USER=pingap
- PINGAP_ADMIN_PASSWORD=<YourSecurePassword> # Change this!
command:
# Start pingap and enable hot-reloading
- pingap
- --autoreload
- एक डेटा डायरेक्टरी बनाएं और चलाएं:
mkdir pingap_data
docker-compose up -d
- Admin UI तक पहुँचें:
आपका Pingap इंस्टेंस अब चल रहा है! आप अपने द्वारा सेट किए गए क्रेडेंशियल्स के साथ http://localhost/pingap पर वेब एडमिन इंटरफ़ेस तक पहुँच सकते हैं।
curl के माध्यम से बाइनरी इंस्टॉल करें
Linux और macOS के लिए, आप एक कमांड से नवीनतम पूर्व-निर्मित बाइनरी को /usr/local/bin/pingap में इंस्टॉल कर सकते हैं:
curl -sSL https://raw.githubusercontent.com/vicanso/pingap/main/install.sh | sh
वैकल्पिक पर्यावरण चर:
PINGAP_FULL=1—-fullबिल्ड इंस्टॉल करें (सभी वैकल्पिक सुविधाएँ सक्षम)PINGAP_LIBC=gnu— Linux पर, डिफ़ॉल्ट musl स्थिर बिल्ड के बजाय glibc बिल्ड का उपयोग करेंPINGAP_TLS=rustls— Linux पर,-rustls-fullबिल्ड इंस्टॉल करें (rustls TLS बैकएंड, सभी वैकल्पिक सुविधाएँ, OpenSSL नहीं); TLS बैकएंड देखें
# Full-featured build
curl -sSL https://raw.githubusercontent.com/vicanso/pingap/main/install.sh | PINGAP_FULL=1 sh
समर्थित लक्ष्य: Linux x86_64/arm64, Darwin x86_64/arm64। सभी उपलब्ध एसेट्स के लिए releases पृष्ठ देखें।
अधिक विस्तृत निर्देशों के लिए, जिसमें बाइनरी से चलाना शामिल है, हमारा Documentation देखें।
कॉन्फ़िगरेशन फ़ाइल के बिना एक प्रॉक्सी शुरू करें
एक डोमेन को https पर सेवा देने और इसे बैकएंड पर अग्रेषित करने के लिए एक ही कमांड पर्याप्त है:
# certificate requested from let's encrypt
pingap --domain=pingap.io --upstream=192.168.1.1:3000
# or bring your own certificate
pingap --domain=pingap.io --upstream=192.168.1.1:3000 --cert=/etc/ssl/pingap.io
--cert के बिना, Pingap HTTP-01 चुनौती के माध्यम से Let's Encrypt से एक प्रमाणपत्र मांगता है, इसलिए pingap.io को इस होस्ट पर रिज़ॉल्व होना चाहिए और पोर्ट 80 इंटरनेट से पहुँच योग्य होना चाहिए। जारी किया गया प्रमाणपत्र ~/.pingap/acme/<domains>.toml में रखा जाता है और पुनः आरंभ पर पुनः उपयोग किया जाता है — जारी करना दर सीमित है, इसलिए इसे हटाएं नहीं। बाकी सब कुछ अभी भी कमांड लाइन से आता है: --upstream बदलना प्रमाणपत्र को छुए बिना अगले आरंभ पर प्रभावी हो जाता है।
--cert स्वयं प्रमाणपत्र या इसे रखने वाली डायरेक्टरी स्वीकार करता है — सामान्य fullchain.pem / privkey.pem, cert.pem / key.pem और tls.crt / tls.key लेआउट स्वचालित रूप से पहचाने जाते हैं, किसी और चीज़ के लिए --key का उपयोग करें। जब एक प्रमाणपत्र होता है तो लिसनर डिफ़ॉल्ट रूप से 0.0.0.0:443 पर और जब न तो प्रमाणपत्र होता है और न ही डोमेन तो 0.0.0.0:80 पर होता है, और --addr इसे ओवरराइड करता है। --upstream बैकएंड की अल्पविराम से अलग की गई सूची लेता है, --domain होस्ट की अल्पविराम से अलग की गई सूची (सादे http पर हर होस्ट को सेवा देने के लिए इसे छोड़ दें)। सूचीबद्ध नहीं किए गए होस्ट के लिए अनुरोधों का उत्तर 404 के साथ दिया जाता है।
कॉन्फ़िगरेशन हर आरंभ पर उत्पन्न होता है, इसलिए इसे एडमिन UI के माध्यम से संपादित नहीं किया जा सकता: एकल सर्वर से परे किसी भी चीज़ के लिए --conf का उपयोग करें, जिसे इन फ़्लैग्स के साथ संयोजित नहीं किया जा सकता।
गतिशील कॉन्फ़िगरेशन
Pingap को डाउनटाइम के बिना कॉन्फ़िगरेशन परिवर्तनों के अनुकूल होने के लिए डिज़ाइन किया गया है।
Hot Reload (--autoreload): अधिकांश परिवर्तनों के लिए—जैसे अपस्ट्रीम, स्थान, या प्लगइन्स को अपडेट करना—Pingap बिना पुनः आरंभ के 10 सेकंड के भीतर नया कॉन्फ़िगरेशन लागू करता है। यह कंटेनरीकृत वातावरण के लिए अनुशंसित मोड है।
Graceful Restart (-a या --autorestart): मौलिक परिवर्तनों के लिए (जैसे सर्वर लिसन पोर्ट को संशोधित करना), यह मोड एक पूर्ण, शून्य-डाउनटाइम पुनः आरंभ करता है, यह सुनिश्चित करते हुए कि कोई अनुरोध न छूटे।