
nginx जैसा रिवर्स प्रॉक्सी, pingora पर निर्मित, सरल और कुशल।
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"]
🚀 उच्च प्रदर्शन और विश्वसनीयता
🔧 गतिशील और उपयोग में आसान
🧩 शक्तिशाली विस्तारणीयता
📊 आधुनिक अवलोकनशीलता
{: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
आपका Pingap इंस्टेंस अब चल रहा है! आप अपने द्वारा सेट किए गए क्रेडेंशियल्स के साथ http://localhost/pingap पर वेब एडमिन इंटरफ़ेस तक पहुँच सकते हैं।
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): मौलिक परिवर्तनों के लिए (जैसे सर्वर लिसन पोर्ट को संशोधित करना), यह मोड एक पूर्ण, शून्य-डाउनटाइम पुनः आरंभ करता है, यह सुनिश्चित करते हुए कि कोई अनुरोध न छूटे।