参考资料

  1. Composer 是 PHP 的依赖管理工具
  2. 青龙面板(QingLong)是一款开源的、基于Web的定时任务管理平台
  3. Joomla 是一款开源的内容管理系统
  4. httpd(Apache HTTP Server)是Apache软件基金会开发的开源Web服务器软件
  5. Docker/DockerHub 国内镜像源/加速列表
  6. api-firewall 是一个开源的 API 防火墙
  7. Go(又称 Golang)是 Google 开发的一种静态强类型、编译型、并发型编程语言
  8. Adminer(原phpMinAdmin)是一个轻量级、功能完整的数据库管理工具

Kong 详细简介

Kong 是一个开源的云原生 API 网关和微服务管理平台,基于 Nginx 和 OpenResty 构建,提供高性能、可扩展的 API 管理能力。

特点

  1. 插件架构:支持认证、限流、日志等丰富插件。

  2. 高性能:基于 Nginx,支持高并发。

  3. 云原生支持:兼容 Kubernetes、Docker 等。

  4. 多协议支持:HTTP/HTTPS、gRPC、WebSocket 等。

  5. 数据库支持:PostgreSQL、Cassandra(社区版)。

最新更新内容及时间

  • 最新版本:3.4.x(截至 2023 年 10 月)

  • 更新内容

    • 新增 gRPC 路由增强。

    • 改进插件性能。

    • 安全漏洞修复。

镜像下载地址

官网地址

https://konghq.com/

文档地址

https://docs.konghq.com/

Docker 安装示例

# 启动 PostgreSQL 容器
docker run -d --name kong-database \
  -p 5432:5432 \
  -e POSTGRES_USER=kong \
  -e POSTGRES_DB=kong \
  postgres:13

# 初始化数据库
docker run --rm \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-database" \
  kong:latest kong migrations bootstrap

# 启动 Kong
docker run -d --name kong \
  --link kong-database:kong-database \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=kong-database" \
  -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
  -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
  -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
  -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
  -e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
  -p 8000:8000 \
  -p 8443:8443 \
  -p 8001:8001 \
  -p 8444:8444 \
  kong:latest

YAML 设置教程(Kong 声明式配置)

_format_version: "1.1"
services:
- name: my-service
  url: http://example.com
  routes:
  - name: my-route
    paths: ["/"]
  plugins:
  - name: rate-limiting
    config:
      minute: 5

常用错误及问题

  1. 数据库连接失败

    • 检查 KONG_DATABASEKONG_PG_HOST 环境变量。

    • 确保数据库服务已启动。

  2. 插件加载失败

    • 确认插件名称拼写正确。

    • 检查插件兼容性(企业版/社区版)。

  3. 端口冲突

    • 默认占用 8000(代理)、8001(Admin API)、8443/8444(HTTPS)。

  4. 迁移错误

    • 使用 kong migrations upkong migrations finish 修复。

  5. 性能问题

    • 调整 Nginx 工作进程数量(KONG_NGINX_WORKER_PROCESSES)。