
nginx जैसा रिवर्स प्रॉक्सी, pingora पर निर्मित, सरल और कुशल।
Cloudflare Pingora पर आधारित एक रिवर्स प्रॉक्सी और एप्लिकेशन गेटवे। इसे TOML फ़ाइलों या बाइनरी का ही हिस्सा एक वेब एडमिन के माध्यम से कॉन्फ़िगर किया जाता है, यह बिना रीस्टार्ट किए बदलाव लागू करता है, और इसमें तीस से अधिक प्लगइन शामिल हैं।
中文说明 | Documentation · 中文文档 | Examples | Plugins | Crates | Upgrading
pingap -t उसे जाँचता है, पिछले संस्करण रखे और पुनर्स्थापित किए जा सकते हैं, और रीड-ओनली खाते तथा API टोकन उपलब्ध हैं। इसका होम पेज Prometheus के बिना पिछले पंद्रह मिनट के ट्रैफ़िक को चार्ट करता है - दर, स्थिति, विलंबता, प्रत्येक अपस्ट्रीम।--autoreload)। जिन्हें नए लिसनर चाहिए वे सॉकेट सौंपने वाले रीस्टार्ट द्वारा लागू होते हैं (--autorestart, Linux पर डेमॉन के लिए), और यदि इसका प्रतिस्थापन नहीं आता तो चल रही प्रक्रिया सेवा देना जारी रखती है।-t वह सब बनाता है जो एक स्टार्ट बनाता, --strict उन कुंजियों को अस्वीकार करता है जिन्हें वह नहीं जानता, --diff दिखाता है कि कोई बदलाव क्या करेगा। TOML, HCL या KDL, फ़ाइलों में या etcd में, जिसमें सीक्रेट्स पर्यावरण या फ़ाइलों से लिए जाते हैं।रिवर्स प्रॉक्सी जो बाकी काम करता है वह भी मौजूद है: HTTP/1.1, HTTP/2, WebSocket और gRPC-web; होस्ट, पाथ और रेगुलर एक्सप्रेशन द्वारा रूटिंग; राउंड रॉबिन, लीस्ट कनेक्शन, कंसिस्टेंट हैशिंग और स्टिकी सेशन, हेल्थ चेक, रीट्राई और सर्किट ब्रेकर के साथ; DNS (A/AAAA, SRV) या Docker लेबल से बैकएंड; लिसनर पर और अपस्ट्रीम की ओर PROXY प्रोटोकॉल; OpenSSL या rustls।
मेट्रिक्स, ट्रेसिंग और इमेज ऑप्टिमाइज़ेशन -full बिल्ड्स में हैं।
# 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.
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 या फ़ाइल से बदल दिया जाता है |