当时我还没有怎么接触开源社区,能力只停留在 Git Clone,大概花了 2 周时间,我学习 Lua 基本语法后,开始阅读 Kong 项目的源码,并找到几个切入点梳理了源码分析文档,也应该正是这个成果让组长认同了我,这之后我负责公司 API Gateway 的开发,以及相关的落地工作。
那么本文针对 Kong 的启动流程、插件机制、缓存机制和请求的生命周期做了详细的阐述,不过仍有欠缺的是代理转发功能,例如负载均衡、健康检查、服务发现等。
]]>syntax: ok, err = balancer.set_current_peer(host, port) context: balancer_by_lua* Sets the peer address (host and port) for the current backend query (which may be a retry). Domain names in host do not make sense. You need to use OpenResty libraries like lua-resty-dns to obtain IP address(es) from all the domain names before entering the balancer_by_lua* handler (for example, you can perform DNS lookups in an earlier phase like access_by_lua* and pass the results to the balancer_by_lua* handler via ngx.ctx.
按照正常 nginx 的逻辑,upstream 中是可以写域名的。此处 OpenResty 文档说不能写域名,但是可以用 DNS 把域名的 IP 解析出来。
解析 IP 的方式在明显不符合需求,假如我有个 test.com
的域名,指向了某个 IP 。这个 IP 是个 nginx,根据 server_name 来区分请求。如果是通过 IP 转发过来的请求,请求头里边是没有 Host
的,所以请求并不能正常转发。
目前不考虑使用 recreate_request
方法来做,有没有什么办法解决这个问题?
先简要介绍一下:
OpenResty Con 2015 将在 11 月 14 日(本周六)在 北京 举行。本次 OpenResty 大会聚焦于实际项目中遇到的问题和解决方法,并希望能与大家一起探讨 OpenResty 项目未来的发展。
OpenResty 是一个知名的开源项目,它将脚本语言 Lua 嵌入到 NGINX 中,并提供基于 Lua 的 API 接口,大大降低了基于 NGINX 的 Web Server 的开发难度和开发周期。
OpenResty Con 2015 邀请了众多知名互联网公司的开发者和 OpenResty 开源项目创建者到场和大家一起交流分享。希望 OpenResty Con 2015 的举办,能为国内 OpenResty 开发者搭建一个更好的交流和沟通平台,更加促进 OpenResty 良好的技术氛围。
议题和更多详细信息都可以查询 官方网站
作为 OpenResty Con 2015 的合作伙伴, BearyChat 也想借此机会邀请更多感兴趣的朋友一起到场交流,所以我们做了一个小型的赠票活动:
1 )可以关注我们的官方微信 bearyinnovative 并点击相关活动参加;
2 )也可以跟帖回复,如果能在跟帖里告诉我们你的 BearyChat 团队名称那就更好了。
周三晚我们将通过 BearyChat 抽奖机器人随机抽出获奖名单并随后公布,欢迎各位参加:)
最后再安利一下 BearyChat ,我们是一款以团队为中心的沟通工具,提供简单高效的沟通服务,并通过自定义机器人等实现信息汇集等更多功能。
详细介绍: http://bearyinnovative.com/
注册地址: https://bearychat.com
也欢迎关注我们的官方微博 @BearyChat
]]>