美文网首页openresty
Kong的入口在哪里?

Kong的入口在哪里?

作者: 印随2018 | 来源:发表于2017-11-28 18:47 被阅读33次

OpenResty的项目入门比较困难,其中一个重要原因就是没有入口函数,即程序员熟悉的main函数,这一点和其他开发平台完全不同。对于初学者来说,这一点就需要很长时间才能习惯。下面,我们就拿openresty社区比较成功的开源项目Kong,来做一个简单的介绍。

nginx.conf

因为openresty的唯一入口是Nginx.conf,kong也不会例外

snippet-1

1   init_by_lua_block {
2     kong = require 'kong'
3     kong.init()
4   }

snippet-1#L2是最关键的代码。但是从源码中,并没有找到kong.lua。从种种迹象(NGINX.CONF引用的多个函数)是指向kong/init.lua,不合理呀~

再看看nginx.conf配置文件

snippet-2

1   lua_package_path '?/init.lua;./kong/?.lua;/root/resthub-edge/?.lua;;';

很明显,require kong命中了加载规则?/init.lua

这样就解释了snippet-1#L2的合理性。

kong.lua

如果你查看过kong的安装目录,就会发现kong.lua(/usr/local/share/lua/5.1/kong.lua)是存在的,这又是什么原因呢?

从源码安装kong的时候使用的是make install,那我们来看看Makefile文件吧

snippet-3

1   .PHONY: install dev lint test test-integration test-plugins test-all
2
3   install:
4       @luarocks make OPENSSL_DIR=$(OPENSSL_DIR)

从snippet-3#L4可以看出,lua代码是使用luarocks安装的,那我们看看它的配置文件kong-0.11.1-0.rockspec

 1 build = {
 2   type = "builtin",
 3   modules = {
 4     ["kong"] = "kong/init.lua",
 5     ["kong.meta"] = "kong/meta.lua",
 6     ["kong.constants"] = "kong/constants.lua",
 7     ["kong.singletons"] = "kong/singletons.lua",
 8     ["kong.conf_loader"] = "kong/conf_loader.lua",

从snippet-4#L4可以看出,luarocks在安装的时候,把init.lua改名为kong.lua,并且上移了一层目录。

why?我也不知道,只能去问问kong的社区问问了。

相关文章

  • Kong的入口在哪里?

    OpenResty的项目入门比较困难,其中一个重要原因就是没有入口函数,即程序员熟悉的main函数,这一点和其他开...

  • Kong的入口在哪里?

    OpenResty的项目入门比较困难,其中一个重要原因就是没有入口函数,即程序员熟悉的main函数,这一点和其他开...

  • kong docker-compose 搭建总结

    通过docker-compose 搭建kong+kong-dashboard 的环境。因为需要学习使用kong,在...

  • 互联网思维之入口思维

    今天我们讲互联网思维之入口思维。现在,什么最贵?流量最贵。流量在哪里?流量在入口。入口在哪里? 如果是线上的话就是...

  • API Gateway Kong在Rainbond上的部署

    API Gateway Kong在Rainbond上的部署 API Gateway Kong在Rainbond上的...

  • 配置详解 - 玩转Kong网关

    配置加载 Kong的默认配置在 /etc/kong/kong.conf.default 。如果你通过一个官方的安装...

  • kong+elasticsearch监控所有请求

    kong+elasticsearch监控所有请求 Kong文章系列 Kong系列(一)——Kong安装 Kong系...

  • Kong网关-初探

    1 Kong网关介绍 Kong是在Nginx的基础上构建的,更确切的说Kong是在Nginx中运行的Lua应用程序...

  • 二、快速入门

    在本节中,您将学习如何管理您的KONG实例。首先,我们将指导您如何启动Kong,以便您能访问KONG的 RESTf...

  • [转载]选择Kong作为你的API网关

    本文转载自选择Kong作为你的API网关 Kong(https://github.com/Kong/kong)是一...

网友评论

    本文标题:Kong的入口在哪里?

    本文链接:https://www.haomeiwen.com/subject/vzbebxtx.html