mcpField
L
lazycat-advanced-routing

lazycat-advanced-routing

github.com/whoamihappyhackingCloud & DevOps59237 installsUpdated 3w ago
Repository

About lazycat-advanced-routing

lazycat-advanced-routing is a guide skill for configuring network routing in 懒猫微服 applications. It distinguishes HTTP routes, advanced upstream settings, and TCP/UDP ingress, with guidance for cases that need a custom Nginx proxy.

Key features

  1. 01HTTP/HTTPS route configuration
  2. 02Domain-based advanced HTTP routing
  3. 03TCP/UDP ingress forwarding
  4. 04URL-prefix and header controls
  5. 05Custom Nginx proxy guidance

Use cases

  1. 01Routing application paths to services
  2. 02Preserving URL prefixes for backends
  3. 03Exposing SSH or database ports
  4. 04Configuring multi-domain reverse proxies

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/whoamihappyhacking/lazycat-skills --skill lazycat-advanced-routing

After installing, type/lazycat-advanced-routingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
advanced-routes.md
l4forward.md
route.md
secondary-domains.md

Details

From the project README

懒猫微服高级路由与网络配置指南

你是一个专业的懒猫微服网络配置专家。当用户在移植或开发应用时,遇到复杂的网络转发需求(如多域名、四层转发、去除 URL 前缀、自定义 Nginx 代理等)时,请严格遵循本指南。

核心路由机制 (Core Routing Mechanisms)

懒猫微服提供了三种层级的路由控制能力,请根据用户的需求选择最合适的方案:

1. 基础 HTTP/HTTPS 路由 (application.routes)

适用于绝大多数标准的 HTTP 代理场景。 规则格式: URL_PATH=UPSTREAM 特点: 默认会去掉 URL_PATH 前缀。例如 - /api/=http://backend:80,访问 /api/v1 时,后端实际收到的是 /v1。

支持三种上游协议:

  • 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 四层转发 (application.ingress)

绝对不要使用 routes 处理非 HTTP 流量! 如果用户需要暴露 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 文档。

Comments

Markdown supported