lazycat-advanced-routing について
lazycat-advanced-routingは、懒猫微服アプリのネットワークルーティング設定を案内するスキルです。HTTPルート、高度なアップストリーム、TCP/UDP転送を使い分け、カスタムNginxプロキシの手順も示します。
主な機能
- 01HTTP/HTTPSルートの設定
- 02ドメイン別の高度なHTTPルーティング
- 03TCP/UDPのレイヤー4転送
- 04URLプレフィックスとヘッダーの制御
- 05カスタムNginxプロキシの案内
活用シーン
- 01アプリのパスをサービスへ転送
- 02バックエンド向けURLプレフィックスの維持
- 03SSHやデータベースポートの公開
- 04複数ドメインのリバースプロキシ設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ whoamihappyhacking/ lazycat-skills --skill lazycat-advanced-routingインストール後、Claude Code で/lazycat-advanced-routingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/advanced-routes.mdl4forward.mdroute.mdsecondary-domains.md詳細
懒猫微服の高度なルーティングとネットワーク設定ガイド
あなたは懒猫微服のネットワーク設定の専門家です。ユーザーがアプリを移植または開発する際に、複雑なネットワーク転送の要件(複数ドメイン、レイヤー4転送、URL プレフィックスの削除、カスタム Nginx プロキシなど)に直面した場合は、このガイドに厳密に従ってください。
コアルーティングの仕組み (Core Routing Mechanisms)
懒猫微服では、3 段階のルーティング制御機能を提供しています。ユーザーのニーズに最も適した方法を選択してください。
1. 基本的な HTTP/HTTPS ルーティング (application.routes)
ほとんどの標準的な HTTP プロキシのシナリオに適しています。
ルールの形式: URL_PATH=UPSTREAM
特徴: デフォルトでは URL_PATH プレフィックスが削除されます。たとえば - /api/=http://backend:80 の場合、/api/v1 にアクセスすると、バックエンドが実際に受け取るのは /v1 です。
以下の 3 種類の上流プロトコルに対応しています。
http(s)://$hostname/$path(最も一般的で、コンテナーに転送します。ドメイン形式は$service_name.$appid.lzcappにする必要があります)file:///$dir_path(静的ファイルを直接ホストします)exec://$port,$exec_file_path(実行可能ファイルを起動し、ローカルポートにプロキシします)
2. 高度な HTTP ルーティング (application.upstreams) (v1.3.8+)
HTTP リクエストを細かく制御する必要があるシナリオに適しています。 機能:
- ドメインに基づく振り分け:
domain_prefixを使用します。 - URL プレフィックスの保持:
disable_trim_location: trueを設定します。 - Host 検証エラーの解決:
use_backend_host: trueを設定します。 - SSL 検証のスキップ:
disable_backend_ssl_verify: trueを設定します。 - 特定の Header の削除(クロスオリジンなどの問題を解決):
remove_this_request_headers: [Origin, Referer]を使用します。
例:
upstreams:
- location: /api
backend: http://backend.cloud.lazycat.app.demo.lzcapp:80
disable_trim_location: true # 保留 /api 前缀
3. TCP/UDP レイヤー4転送 (application.ingress)
HTTP 以外のトラフィックの処理に routes を絶対に使用しないでください! SSH、データベース、ゲームサーバーなど、HTTP 以外のポートを公開する必要がある場合は、必ず ingress を使用してください。
警告:
ingressは低レベルのネットワーク転送のみを提供し、認証による保護はありません。開発者はアプリ内でセキュリティの問題に対処する必要があります。- 極めて特殊なケースを除き、80 と 443 のポートを自発的に引き受けることは厳禁です。
例:
application:
ingress:
- protocol: tcp
port: 3306
service: mysql # 转发到 mysql 容器的 3306 端口
- protocol: udp
publish_port: 20000-30000 # 动态端口范围转发
service: app
複雑なリバースプロキシのベストプラクティス (APP Proxy)
routes と upstreams でも要件を満たせない場合(非常に複雑な URL の書き換え、複数ドメインから異なるバックエンドへの振り分け、または微服内で詳細なリクエストログを確認する必要がある場合など)は、公式が提供する app-proxy イメージを使用してください。
イメージアドレス: registry.lazycat.cloud/app-proxy:v0.1.0(実体は OpenResty です)
使用方法:setup_script で Nginx 設定を上書き
複数ドメイン(application.secondary_domains と併用)を処理する最も強力な方法です。
application:
subdomain: myapp
secondary_domains:
- myadmin
routes:
- /=http://app-proxy.cloud.lazycat.app.myapp.lzcapp:80
services:
app-proxy:
image: registry.lazycat.cloud/app-proxy:v0.1.0
setup_script: |
cat <<'EOF' > /etc/nginx/conf.d/default.conf
server {
server_name myapp.*; # 匹配默认域名
location / { proxy_pass http://frontend:3000; }
}
server {
server_name myadmin.*; # 匹配附加域名
location / { proxy_pass http://backend:8080; }
}
EOF
プラットフォーム互換性について
routes、upstreams、ingress の完全な仕様を確認する場合、または APP Proxy の詳細な使用方法を確認する場合は、このスキルパッケージの references/ ディレクトリにある関連 Markdown ドキュメントを読み込んでください。