Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
pingap — nginx のようなリバースプロキシ、pingora 上に構築、シンプルで効率的。 | Kitploit
ツール/GitHubGitHub/vicanso/pingap
認証と認可リバースエンジニアリングウェブセキュリティクラウドセキュリティDevSecOps認証APIセキュリティ
GitHubvicanso/pingap

pingap

nginx のようなリバースプロキシ、pingora 上に構築、シンプルで効率的。

リポジトリを見る
1.3k97371日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

pingap

pingap のバージョンが安定するまで、プルリクエストは受け付けられません。ご質問がある場合は、まず新しい issue を作成してください。

Pingap Logo

概要

Pingap は、Cloudflare Pingora を採用した高性能リバースプロキシです。簡潔な TOML ファイルと直感的な Web 管理インターフェースを通じて、動的でダウンタイムゼロの設定ホットリロードを可能にし、運用管理を簡素化します。

その中核となる強みは強力なプラグインシステムにあり、認証 (JWT、Key Auth)、セキュリティ (CSRF、IP/Referer/UA 制限)、トラフィック制御 (レート制限、キャッシュ)、コンテンツ変更 (リダイレクト、コンテンツ置換)、可観測性 (リクエスト ID) のための 20 以上のすぐに使える機能を提供します。これにより Pingap は単なるプロキシではなく、柔軟で拡張可能なアプリケーションゲートウェイとなり、API 保護からモダンな Web アプリケーションのデプロイまで、複雑なシナリオを容易に処理できるよう設計されています。

中文说明 | 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 の両方をサポート。
    • 設定履歴の記録をサポートし、ワンクリックで履歴バージョンに復元可能。
  • 🧩 強力な拡張性

    • 一般的なゲートウェイタスクを処理する豊富なプラグインシステム。
    • ホスト、パス、正規表現マッチングによる高度なルーティング。
    • 静的リスト、DNS、Docker ラベルによる組み込みのサービスディスカバリ。
    • Let's Encrypt による HTTPS の自動化 (HTTP-01 と DNS-01 の両方のチャレンジをサポート)。
  • 📊 モダンな可観測性

    • 監視のためのネイティブ Prometheus メトリクス (プル & プッシュモード)。
    • 分散トレーシングのための OpenTelemetry サポートを統合。
    • 30 以上の変数を持つ高度にカスタマイズ可能なアクセスログ。
    • JA4 TLS クライアントフィンガープリント (アクセスログでは {:ja4}、アップストリームヘッダーでは $ja4) により、OpenSSL と rustls のビルドのいずれでも、クライアントをその TLS スタックで識別可能。
    • アップストリームの接続時間、処理時間など、詳細なパフォーマンスメトリクス。

🚀 はじめに

Pingap を始める最も簡単な方法は Docker Compose を使用することです。

  1. 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
  1. データディレクトリを作成して実行します:
mkdir pingap_data
docker-compose up -d
  1. 管理 UI にアクセスします:

Pingap インスタンスが起動しました! 設定した認証情報を使用して、http://localhost/pingap で Web 管理インターフェースにアクセスできます。

curl でバイナリをインストール

Linux と macOS では、1 つのコマンドで最新のビルド済みバイナリを /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 ページ を参照してください。

バイナリからの実行を含むより詳細な手順については、ドキュメント をご覧ください。

設定ファイルなしでプロキシを起動

1 つのコマンドで、ドメインを 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 はダウンタイムなしで設定変更に適応するように設計されています。

ホットリロード (--autoreload): アップストリーム、ロケーション、プラグインの更新など、ほとんどの変更では、Pingap は再起動なしで 10 秒以内に新しい設定を適用します。これはコンテナ環境に推奨されるモードです。

グレースフルリスタート (-a または --autorestart): サーバーのリッスンポートの変更など、根本的な変更では、このモードは完全なダウンタイムゼロの再起動を実行し、リクエストが失われないようにします。

ハンドオーバーは時間ベースではなくレディネス駆動です。置換プロセスは -d -u で起動され、リスナーを引き継ぐ準備ができた瞬間にアップグレードソケットの隣の unix ソケットを介して報告し、その後にのみ実行中のプロセスが自身に SIGQUIT を送信します。置換プロセスが終了した場合、そのデーモンが死んだ場合、または basic.restart_ready_timeout (デフォルト 1m) が先に経過した場合、再起動は中止され、実行中のプロセスは提供を続けます。

🔧 開発

make dev

Web 管理が必要な場合は、nodejs をインストールして Web アセットをビルドする必要があります。

# generate admin web asset
cd web
npm i 
cd ..
make build-web

TLS バックエンド

デフォルトのビルドは、openssl クレートによってソースからコンパイルされた OpenSSL で TLS を終端します。代わりに rustls でビルドするには、OpenSSL のソースビルドを省略します (C コンパイラは依然として必要です。rustls の暗号プロバイダである ring と aws-lc-rs には C とアセンブリが含まれています):

cargo build --release --no-default-features --features tls-rustls
# with the optional features as well
cargo build --release --no-default-features --features tls-rustls,full

rustls ビルドは、サーバーごとの tls_min_version、tls_max_version、tls_cipher_list、tls_ciphersuites 設定を設定検証時 (起動、--test、自動再起動) に拒否します。常に rustls のデフォルト暗号スイートで TLS 1.2 と 1.3 を提供します。管理 UI は、実行中のバイナリが rustls ビルドの場合、これらのフィールドを無効にします。動的 SNI 証明書、自己署名 CA 発行、ACME、アップストリームの ca オプションを含むその他すべては同じように動作します。ビルド済みイメージも同じバリアントを提供します: vicanso/pingap:rustls-full (リリースでは :<version>-rustls-full)、および :latest と :full。アップストリームを検証する際に知っておくべき違いが 1 つあります: rustls (webpki) は CA:TRUE を持つサーバー証明書を拒否しますが、OpenSSL は受け入れます。そのため、手早く openssl req -x509 で自己署名証明書を使用するバックエンドは、アップストリームの ca オプションが信頼できるようにする前に、CA によって署名された適切なリーフ証明書 (または CA フラグのない自己署名リーフ証明書) が必要です。--version (長形式)、起動ログ、管理ホームページはすべて、バイナリがどのバックエンドでビルドされたかを報告します。

📝 設定

server "test" {
  addr = "127.0.0.1:6118"

  location "github-api" {
    path = "/api"
    proxy_set_headers = ["Host:api.github.com"]
    rewrite = "^/api/(?<path>.+)$ /$1"

    upstream "api" {
      addrs     = ["api.github.com:443"]
      discovery = "dns"
      sni       = "api.github.com"
    }
  }

  location "static" {
    plugin "staticServe" {
      category = "directory"
      path     = "~/Downloads"
      step     = "request"
    }
  }
}
[upstreams.api]
addrs = ["api.github.com:443"]
discovery = "dns"
sni = "api.github.com"

[plugins.staticServe]
category = "directory"
path = "~/Downloads"
step = "request"

[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"]

関連する手順はこちらにあります: https://pingap.io/crates/config。

🔄 プロキシのステップ

ツールをダウンロード