ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

flatend API网关配置指南:TOML路由、静态文件与自动HTTPS实战

flatend API网关配置指南:TOML路由、静态文件与自动HTTPS实战 flatend API网关配置指南TOML路由、静态文件与自动HTTPS实战【免费下载链接】flatendQuickly build microservices using p2p networking in NodeJS/Go.项目地址: https://gitcode.com/gh_mirrors/fl/flatend如果你正在寻找一份能快速上手的flatend API网关配置指南那么你来对地方了。flatend 是一个用 p2p 网络快速构建微服务的开源框架支持 NodeJS 和 Go 两种语言并内置了一个高性能的 API 网关。本文将从零开始带你掌握 flatend 网关的核心配置文件config.toml内容包括 TOML 路由配置、静态文件托管以及自动 HTTPS 配置全部通过真实案例演示新手也能轻松跟上。什么是 flatend API网关用 p2p 网络连接微服务 flatend 的核心思路是每个函数都是一个微服务。服务节点通过 p2p 网络基于 Kademlia 协议自动发现彼此实现服务注册、负载均衡与全链路加密通信。而flatend API 网关是这一切的入口它由单个 Go 二进制文件构成负责将 HTTP 请求转发给 p2p 网络中合适的微服务节点支持 HTTP/1.1 与 HTTP/2通过 LetsEncrypt 自动签发 HTTPS 证书直接托管静态文件与目录网关崩溃时服务节点会自动重连无需人工干预。整个网关的行为都由一份config.toml驱动接下来我们逐步拆解。快速上手flatend API网关的一键安装与基础配置第一步获取网关二进制 ⚙️最简单的方式是直接下载对应平台的 API 网关可执行文件然后准备好 Go 1.14 或 NodeJS v12.18.1 环境用于编写微服务。也可以从源码构建克隆仓库后进入cmd/flatend/目录执行go build ./cmd/flatend即可生成网关程序。第二步编写最简配置在网关程序同目录下新建config.toml写入以下内容addr 127.0.0.1:9000 [[http]] addr :3000 [[http.routes]] path GET /hello service hello_world其中addr网关监听 p2p 节点连接Flatend 节点的地址[[http]]声明一个 HTTP 服务块addr :3000表示监听 3000 端口[[http.routes]]声明一条路由path GET /hello表示匹配 GET 请求的/hello路径并将其转发给名为hello_world的微服务。第三步启动并验证 ✅运行./flatend你会看到如下日志Listening for Flatend nodes on 127.0.0.1:9000. Listening for HTTP requests on [::]:3000.随后启动一个注册了hello_world服务的节点Go 参考examples/go/hello_world/main.goNodeJS 参考examples/nodejs/hello_world/index.js访问http://localhost:3000/hello即可收到 Hello world! 响应。即使中途重启网关微服务也会自动重连非常省心。TOML路由配置详解从GET /hello到动态参数flatend 的路由配置非常直观核心字段如下配置项说明示例path请求方法与路径格式为方法 /路径POST /todosservice转发的目标服务名单个add_todoservices转发的目标服务列表负载均衡[a, b, c]static静态文件或目录仅限 GET./publicnocache关闭静态文件缓存true支持的方法包括 GET、POST、PUT、DELETE、PATCH配置为PUT /api/user这种方法 空格 路径的写法即可。动态路径参数:id的妙用 flatend 支持在路径中声明参数例如 todo 示例中的配置[[http.routes]] path GET /todos/add/:content service add_todo [[http.routes]] path GET /todos/remove/:id service remove_todo请求/todos/remove/42时参数42会以params.id的形式作为请求头传给remove_todo服务同理:content会映射为params.content。服务端读取请求头即可拿到参数源码逻辑见flathttp/service.go。此外URL 查询参数会以query.xxx的形式传递普通请求头也会原样转发方便业务层使用。多服务负载均衡 ⚖️当services配置了多个服务名时网关会把请求路由到 p2p 网络中注册了这些服务的任意节点天然实现负载均衡[[http.routes]] path POST /:id services [a, b, c]静态文件服务配置一行TOML托管前端目录flatend 网关可以直接托管静态资源非常适合前后端一体部署。在 todo 示例中examples/go/todo/config.toml、examples/nodejs/todo/config.toml前端页面就是这样被托管的[[http.routes]] path GET / static ./public当static指向一个目录时网关会把该目录作为站点根目录自动处理index.html等默认首页文件当它指向一个文件时则将该文件作为响应内容返回例如 README 中展示的[[http.routes]] path GET / static config.toml nocache true这里nocache true会为响应附加Cache-Control: no-cache等头实现见flathttp/middleware.go适用于经常变动的文件默认情况下静态文件会启用缓存提升访问性能。 注意static路由的方法必须是GET配置其他方法会报错。自动HTTPS配置3分钟让网关免费启用SSL证书flatend 网关最亮眼的功能之一就是自动 HTTPS 配置——借助 certmagic 与 LetsEncrypt无需手动申请和续期证书。只需在[[http]]块中开启开关并声明域名[[http]] https true domain yourdomain.com网关会自动完成以下工作实现见cmd/flatend/main.go自动向 LetsEncrypt 申请并管理 TLS 证书在 443 端口提供 HTTPS 服务未指定addr时默认:443自动在 80 端口启动 HTTP → HTTPS 的 301 永久重定向通过 ACME HTTP 挑战验证域名所有权。多域名 HTTPS 配置 如果需要为多个域名签发证书可以使用domains数组[[http]] https true domains [a.yourdomain.com, b.yourdomain.com]注意domain与domains不能同时使用。如果你本地没有公网域名也可以先关闭 HTTPS 在 3000 端口调试上线时再切换配置零成本迁移。更实用的网关调优超时、请求体与重定向选项超时与请求体限制 ⏱️在高并发场景下合理的超时与体积限制能有效保护后端服务[http.timeout] read 10s # 请求读取超时默认 10s read_header 10s # 请求头读取超时默认 10s idle 10s # 空闲连接超时默认 10s write 10s # 响应写入超时默认 10s shutdown 10s # 优雅停机超时默认 10s [http.max] header_size 1048576 # 最大请求头大小字节 body_size 1048576 # 最大请求体大小字节 [http.min] body_size 1048576 # 最小请求体大小字节路径重定向与多端口监听 默认情况下网关会自动处理尾部斜杠和路径大小写/拼写修正[http] redirect_trailing_slash true # 访问 /path/ 时重定向到 /path redirect_fixed_path true # 自动修正接近匹配的路径一个 HTTP 服务块还可以同时监听多个端口[[http]] addrs [:3000, :4000, 127.0.0.1:9000]甚至可以在一个配置文件中声明多个[[http]]块例如一个用于内部 API3000 端口另一个用于面向公网的 HTTPS 入口443 端口互不干扰。实战用 todo 示例串联路由、静态文件与微服务下面这份精简自examples/go/todo/config.tomlNodeJS 版本见examples/nodejs/todo/config.toml的配置完整展示了 flatend 网关的三大能力addr 127.0.0.1:9000 [[http]] addr :3000 [[http.routes]] path GET / static ./public [[http.routes]] path GET /todos service all_todos [[http.routes]] path GET /todos/add/:content service add_todo [[http.routes]] path GET /todos/remove/:id service remove_todo [[http.routes]] path GET /todos/done/:id service done_todo启动后浏览器访问/会加载public目录下的前端页面页面中的增删改查请求则由不同的 p2p 微服务如add_todo、remove_todo实时处理数据通过 SQLite 持久化。整套系统仅依赖一个网关二进制 一份 TOML 配置部署极其轻量。总结通过这份flatend API网关配置指南你应该已经掌握了 flatend 网关的核心用法TOML 路由配置用path service一行语句把 HTTP 请求转发给 p2p 微服务支持动态参数与多服务负载均衡静态文件服务用static字段轻松托管前端目录或单个文件自动 HTTPS 配置开启https true并声明域名即可免费获得自动续期的 SSL 证书与强制跳转进阶调优超时、体积限制、路径重定向、多端口监听一应俱全。如果你想深入学习可以阅读网关配置结构源码flathttp/config.go、请求转发实现flathttp/service.go以及网关入口cmd/flatend/main.go并结合examples/目录下的 Go 与 NodeJS 示例动手实践。配置只改文本、服务自动发现、证书全自动——这就是 flatend 想带给你的零负担微服务网关体验。现在就去试试吧【免费下载链接】flatendQuickly build microservices using p2p networking in NodeJS/Go.项目地址: https://gitcode.com/gh_mirrors/fl/flatend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表