
pingap v0.13.8
nginx जैसा रिवर्स प्रॉक्सी, pingora पर निर्मित, सरल और कुशल।
Pingap
Cloudflare Pingora पर आधारित एक रिवर्स प्रॉक्सी और एप्लिकेशन गेटवे। इसे TOML फ़ाइलों या बाइनरी का ही हिस्सा एक वेब एडमिन के माध्यम से कॉन्फ़िगर किया जाता है, यह बिना रीस्टार्ट किए बदलाव लागू करता है, और इसमें तीस से अधिक प्लगइन शामिल हैं।
中文说明 | Documentation · 中文文档 | Examples | Plugins | Crates | Upgrading
इसे क्या अलग बनाता है
- बाइनरी में एक वेब एडमिन। हर सेटिंग का एक फ़ॉर्म है। कोई बदलाव संग्रहीत होने से पहले उसी तरह जाँचा जाता है जैसे
pingap -tउसे जाँचता है, पिछले संस्करण रखे और पुनर्स्थापित किए जा सकते हैं, और रीड-ओनली खाते तथा API टोकन उपलब्ध हैं। इसका होम पेज Prometheus के बिना पिछले पंद्रह मिनट के ट्रैफ़िक को चार्ट करता है - दर, स्थिति, विलंबता, प्रत्येक अपस्ट्रीम। - बिना डाउनटाइम के बदलाव। अपस्ट्रीम, लोकेशन, प्लगइन और प्रमाणपत्र चल रही प्रक्रिया में बदले जाते हैं (
--autoreload)। जिन्हें नए लिसनर चाहिए वे सॉकेट सौंपने वाले रीस्टार्ट द्वारा लागू होते हैं (--autorestart, Linux पर डेमॉन के लिए), और यदि इसका प्रतिस्थापन नहीं आता तो चल रही प्रक्रिया सेवा देना जारी रखती है। - तीस से अधिक प्लगइन, प्रति लोकेशन और आपके द्वारा सूचीबद्ध क्रम में: प्रमाणीकरण (JWT, OIDC, key, basic, HMAC, forward auth), एक्सेस नियम (IP, referer, user agent, अवरुद्ध पाथ), ट्रैफ़िक (दर और बैंडविड्थ सीमाएँ, कैश, मिररिंग, ट्रैफ़िक स्प्लिटिंग), सामग्री (कम्प्रेशन, बॉडी प्रतिस्थापन, रीडायरेक्ट, स्टैटिक फ़ाइलें, इमेज ऑप्टिमाइज़ेशन) और संचालन (मेंटेनेंस मोड, हेल्थ एंडपॉइंट, त्रुटि पृष्ठ)। सभी प्लगइन
- बिना क्रॉन जॉब के प्रमाणपत्र। Let's Encrypt या कोई अन्य ACME CA, HTTP-01 या DNS-01 (Alibaba Cloud, Cloudflare, Tencent Cloud, Huawei Cloud) द्वारा, RSA और ECDSA साथ-साथ, OCSP स्टेपलिंग, और क्लाइंट्स तथा अपस्ट्रीम की ओर म्यूचुअल TLS।
- ऐसा कॉन्फ़िगरेशन जो चलने से पहले जाँचा जाता है।
-tवह सब बनाता है जो एक स्टार्ट बनाता,--strictउन कुंजियों को अस्वीकार करता है जिन्हें वह नहीं जानता,--diffदिखाता है कि कोई बदलाव क्या करेगा। TOML, HCL या KDL, फ़ाइलों में या etcd में, जिसमें सीक्रेट्स पर्यावरण या फ़ाइलों से लिए जाते हैं। - निगरानी के लिए बनाया गया। Prometheus मेट्रिक्स (pull और push), OpenTelemetry ट्रेस, टेक्स्ट या JSON के रूप में तीस से अधिक फ़ील्ड वाले एक्सेस लॉग, और क्लाइंट्स के JA4 TLS फ़िंगरप्रिंट।
रिवर्स प्रॉक्सी जो बाकी काम करता है वह भी मौजूद है: HTTP/1.1, HTTP/2, WebSocket और gRPC-web; होस्ट, पाथ और रेगुलर एक्सप्रेशन द्वारा रूटिंग; राउंड रॉबिन, लीस्ट कनेक्शन, कंसिस्टेंट हैशिंग और स्टिकी सेशन, हेल्थ चेक, रीट्राई और सर्किट ब्रेकर के साथ; DNS (A/AAAA, SRV) या Docker लेबल से बैकएंड; लिसनर पर और अपस्ट्रीम की ओर PROXY प्रोटोकॉल; OpenSSL या rustls।
मेट्रिक्स, ट्रेसिंग और इमेज ऑप्टिमाइज़ेशन -full बिल्ड्स में हैं।
🚀 शुरुआत करना
Docker Compose
# docker-compose.yml
services:
pingap:
image: vicanso/pingap:latest # for production, pin a release: vicanso/pingap:<version>-full
container_name: pingap-instance
restart: always
ports:
- "80:80"
- "443:443"
volumes:
# everything Pingap keeps: configuration, certificates, cache
- ./pingap_data:/opt/pingap
environment:
- 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:
- pingap
- --autoreload
mkdir pingap_data
docker compose up -d
The admin is at http://localhost/pingap. Images are tagged latest, full and rustls-full, and <version>, <version>-full, <version>-rustls-full for a release. Each also has a -distroless twin without a shell, where command has to start with pingap as it does above.
Binary
curl -sSL https://raw.githubusercontent.com/vicanso/pingap/main/install.sh | sh
Linux और macOS (x86_64 और arm64) पर नवीनतम रिलीज़ को /usr/local/bin/pingap में इंस्टॉल करता है। sh से पहले दिए गए वेरिएबल यह निर्धारित करते हैं कि क्या इंस्टॉल किया जाए:
| वेरिएबल | प्रभाव |
|---|---|
PINGAP_FULL=1 | -full बिल्ड, सभी वैकल्पिक सुविधाओं के साथ |
PINGAP_TLS=rustls | Linux: -rustls-full बिल्ड, OpenSSL के बिना (देखें TLS backend) |
PINGAP_LIBC=gnu | Linux: स्टैटिक musl के स्थान पर glibc बिल्ड |
PINGAP_SERVICE=1 | systemd वाले Linux पर: pingap सेवा और /etc/pingap/conf में एक स्टार्टर कॉन्फ़िगरेशन भी; इसे सक्षम या प्रारंभ नहीं किया जाता |
PINGAP_VERSION=0.15.0 | नवीनतम के स्थान पर वह रिलीज़ |
सभी एसेट्स releases page पर उपलब्ध हैं।
एक कमांड, कोई कॉन्फ़िगरेशन फ़ाइल नहीं
# the certificate comes from Let's Encrypt
pingap --domain=pingap.io --upstream=192.168.1.1:3000
# or bring your own
pingap --domain=pingap.io --upstream=192.168.1.1:3000 --cert=/etc/ssl/pingap.io
--certके बिना प्रमाणपत्र HTTP-01 द्वारा ऑर्डर किया जाता है: डोमेन को इस होस्ट पर रिज़ॉल्व होना चाहिए, पोर्ट 80 पहुँच योग्य होना चाहिए। इसे~/.pingap/acme/<domains>.tomlमें रखा जाता है और अगली बार शुरू होने पर फिर से उपयोग किया जाता है। इसे हटाएँ नहीं, जारी करना दर-सीमित है।--certप्रमाणपत्र या वह निर्देशिका है जिसमें यह है (fullchain.pem/privkey.pem,cert.pem/key.pemऔरtls.crt/tls.keyपाए जाते हैं;--keyकिसी और चीज़ का नाम देता है)।--upstreamऔर--domainअल्पविराम से अलग की गई सूचियाँ लेते हैं,--addrवह पता जिस पर सुनना है।- कॉन्फ़िगरेशन हर बार शुरू होने पर नए सिरे से बनाया जाता है, इसलिए एडमिन इसे संपादित नहीं कर सकता। एक से अधिक सर्वर के लिए
--confका उपयोग करें, जिसके साथ इन फ़्लैग्स को संयोजित नहीं किया जा सकता।
📝 कॉन्फ़िगरेशन
[upstreams.api]
addrs = ["api.github.com:443"]
discovery = "dns"
sni = "api.github.com"
[plugins.staticServe]
category = "directory"
path = "~/Downloads"
[locations.github-api]
upstream = "api"
path = "/api"
proxy_set_headers = ["Host:api.github.com"]
rewrite = "^/api/(?<path>.+)$ /$1"
[locations.static]
plugins = ["staticServe"]
[servers.test]
addr = "127.0.0.1:6118"
locations = ["github-api", "static"]
वही HCL या KDL में लिखा जा सकता है। हर key का वर्णन configuration reference में किया गया है।
--autoreload | बिना restart के बदलाव लागू हो जाता है: फ़ाइलों से दस सेकंड के भीतर, etcd से तुरंत। जिनके लिए restart चाहिए, उनकी सूचना दी जाती है, और restart की प्रतीक्षा की जाती है। कंटेनर के लिए उपयुक्त मोड |
-a, --autorestart | वही, और एक ऐसा restart जो उन चीज़ों के लिए कोई request नहीं गिराता जिन्हें reload नहीं बदल सकता, जैसे listen address। Linux पर daemon (-d) के लिए; कहीं और यह reload करता है, और बताता है कि क्या प्रतीक्षा में है |
-t | start की तरह हर upstream, location, plugin, certificate और server बनाता है, और कुछ भी bind नहीं करता |
--strict | Pingap जिस key को नहीं जानता, या जिसके लिए इस build में कोई feature नहीं है, वह error है, जहाँ अन्यथा warning होती। CI में -t के लिए |
--diff <other> | बताता है कि यदि <other> configuration का स्थान ले ले तो क्या बदलेगा, credentials checksum के रूप में दिखाए जाते हैं |
$ENV:NAME, $FILE:/path | पूरे मान के रूप में: configuration लोड होने पर variable या फ़ाइल से बदल दिया जाता है |