Kong配置参考
1. 配置加载
如果您通过其中⼀个官⽅软件包安装了Kong,Kong会附带默认配置⽂件,该⽂件可以在/etc/f.default中到。要开始配置Kong,您可以复制此⽂件:
$ cp /etc/f.default /etc/f
如果您的配置中的所有内容都注释掉,Kong将使⽤默认设置进⾏操作。启动时,Kong会查可能包含配置⽂件的⼏个默认位置:
/etc/f
/f
您可以通过使⽤CLI中的-c / --conf 命令,⾃定义配置⽂件的路径来覆盖此⾏为:
$ kong start --conf /path/f
配置格式很简单:只需取消注释任何属性(注释由#字符定义),并根据您的需要进⾏修改。布尔值可
以指定为on / off或true / false,使⽤起来很⽅便。
nginx 配置文件2. 验证您的配置
您可以使⽤check命令验证设置的完整性:
$ kong check <path/f>
configuration at <path/f> is valid
此命令将验证您当前设置的环境变量,如果您的设置⽆效,将会出错。此外,您还可以在调试模式下使⽤CLI,以了解有关KONG在启动时加载了哪些配置的更多信息:
$ kong start -c &f> --vv
2016/08/11 14:53:36 [verbose] no config file found at /f
2016/08/11 14:53:36 [verbose] no config file found at /etc/f
2016/08/11 14:53:36 [debug] admin_listen = "0.0.0.0:8001"
2016/08/11 14:53:36 [debug] cluster_listen = "0.0.0.0:7946"
2016/08/11 14:53:36 [debug] cluster_listen_rpc = "127.0.0.1:7373"
2016/08/11 14:53:36 [debug] cluster_profile = "wan"
2016/08/11 14:53:36 [debug] cluster_ttl_on_failure = 3600
2016/08/11 14:53:36 [debug] database = "postgres"
2016/08/11 14:53:36 [debug] log_level = "notice"
[...]
3. 环境变量
从配置⽂件中加载属性时,Kong还会查同名的环境变量。这允许您通过配置环境变量实现完全的配置Kong,这对于譬如基于容器或其他的⼀些基础架构来说,是⾮常⽅便的。所有以KONG_为前缀的,格式为⼤写并且命名相同的环境变量设置将会被覆盖。
例如: log_level = debug # f
可以重写为: $ export KONG_LOG_LEVEL=error
4. ⾃定义 Nginx 配置 & 嵌⼊式的KONG配置
调整Nginx配置是设置Kong实例的重要组成部分,它允许您优化其基础架构的性能,或者将Kong嵌⼊到已经运⾏的OpenResty实例中。
⾃定义Nginx配置:
Kong可以使⽤--nginx-conf参数执⾏启动、重新加载、重新启动的操作,该参数必须指定Nginx配置模板。此模板使⽤Penlight引擎,它使⽤指定的Kong配置进⾏编译,并在启动Nginx之前,将其转储到您的Kong前缀⽬录中。
/usr/local/kong
├── f
├── f
如果您希望在Nginx的配置中包含其他的服务器模块,或者您必须调整Kong未公开的全局设置,可参考以下代码:
# ---------------------
# plate
# ---------------------
worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set f
daemon ${{NGINX_DAEMON}}; # can be set f
pid pids/nginx.pid; # this setting is mandatory
error_log logs/error.log ${{LOG_LEVEL}}; # can be set f
events {
use epoll; # custom setting
multi_accept on;
}
http {
# include default Kong Nginx config
include 'f';
# custom server
server {
listen 8888;
server_name custom_server;
location / {
... # etc
}
}
}
然后,您可以使⽤以下命令来启动Kong:
$ kong start -f --nginx-conf plate
如果您希望⾃定义Kong Nginx⼦配置⽂件,最终添加其他Lua处理程序或⾃定义lua_ *指令,则可以在此plate⽰例⽂件中内嵌nginx_kong.lua配置:
# ---------------------
# plate
# ---------------------
worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set f
daemon ${{NGINX_DAEMON}}; # can be set f
pid pids/nginx.pid; # this setting is mandatory
error_log logs/error.log ${{LOG_LEVEL}}; # can be set f
events {}
http {
resolver ${{DNS_RESOLVER}} ipv6=off;
charset UTF-8;
error_log logs/error.log ${{LOG_LEVEL}};
access_log logs/access.log;
... # etc
}
5. 在OpenResty中嵌⼊Kong
如果您运⾏⾃⼰的OpenResty服务器,还可以通过使⽤include指令(包括上述的⽰例)添加Kong Nginx的⼦配置⽂件来轻松嵌⼊Kong。但是,您将需要最终配置⽂件⽽不是模板。为此,请使⽤compile命令,该命令将完整的编译Nginx⼦配置并输出到stdout:
$ bin/kong compile --f > /usr/local/openresty/f
# now start OpenResty with a configuration that "includes" f
$ nginx -c /usr/local/openresty/f
NOTE:当以这种⽅式嵌⼊Kong时,您将必须确保:正确配置了⽤于编译Nginx⼦配置的f并正常开启了配置所需的第三⽅服务。这些服务包括数据库等。
6. 配置属性说明
Kong相关:
prefix:⼯作⽬录。相当于Nginx的根⽬录,其中包含临时⽂件和⽇志⽂件。每个Kong进程必须有⼀个单独的⼯作⽬录。默认
为 /usr/local/kong。
custom_plugins:该节点⽤于加载的附加插件列表,插件名称⽤逗号分隔开。使⽤此属性可以加载⽤户⾃定义的、Kong未提供的插件。插件将从 kong.plugins {name}.* 形式的命名空间加载。默认为空,插件列表类似于my-plugin,hello-world,custom-rate-limiting的形式。
anonymous_reports:发送匿名的KONG使⽤数据,如错误堆栈等,以帮助改善Kong。默认为开启on。
Nginx相关:
proxy_listen_ssl:如果启⽤ssl,此配置就是KONG⽤来接收HTTP请求的地址和端⼝。默认值为 0.0.0.0:8443。
admin_listen:Kong针对管理员提供的⼊⼝地址和端⼝。该API允许您配置和管理Kong,应该配置为持私的,并确保其是安全的。默认值为 0.0.0.0:8001。
admin_listen_ssl:在启⽤ssl的情况下的管理员对kong进⾏管理的⼊⼝。默认值为 0.0.0.0:8444。
mem_cache_size:数据库缓存⼤⼩的配置。可使⽤的单位是k和m,最⼩推荐值为⼏MB。默认值为 128M。
ssl:确定Nginx是否应该在proxy_listen_ssl地址上侦听HTTP请求。如果禁⽤,Nginx将仅在proxy_listen上绑定,所有关于SSL的设置将被忽略。默认为开启on。
ssl_cert:如果启⽤ssl,则为proxy_listen_ssl地址的SSL证书的绝对路径。如果没有指定并启⽤ssl,Kong将⾃动⽣成默认证书和密钥。
ssl_cert_key:如果启⽤ssl,则为proxy_listen_ssl地址的SSL密钥的绝对路径。
admin_ssl:配置Nginx是否监听admin_listen_ssl地址上的HTTP请求。如果禁⽤,Nginx将仅在admin_listen上绑定,所有SSL设置将被忽略。默认为开启on。
admin_ssl_cert:如果启⽤了admin_ssl,则为admin_listen_ssl地址的SSL证书的绝对路径。如果没有指定,并且启⽤了
admin_ssl,Kong将⽣成默认证书和密钥。
admin_ssl_key:如果启⽤了admin_ssl,则为admin_listen_ssl地址的SSL密钥的绝对路径。
upstream_keepalive:设置保存在每个⼯作进程的缓存中的上游服务器的连接池的最⼤数值。超过此值时,则将最近使⽤的连接关闭。
数据库相关:
Kong将其所有数据(如API,⽤户和插件)存储在Cassandra或PostgreSQL中。属于同⼀集的所有Kong节点必须连接到同⼀个数据库。
database:配置此节点来指定KONG使⽤哪个数据库(PostgreSQL或Cassandra)作为其数据存储。可选的数据库只有postgres和cassandra。默认为 postgres。
Postgres的设置:
pg_host:Postgres的服务器的主机地址
pg_port:Postgres的服务器的端⼝
pg_user:Postgres⽤户名
pg_password:Postgres的⽤户密码
pg_database:要连接的数据库实例名,必须存在
pg_ssl:是否启⽤与服务器的SSL连接
pg_ssl_verify:如果启⽤了pg_ssl,则切换服务器证书验证。请参阅lua_ssl_trusted_certificate设置。
Cassandra的设置:
cassandra_contact_points:集名称列表,以逗号分隔
cassandra_port:您的节点正在监听的端⼝
cassandra_keyspace:您在集中使⽤的密钥空间,如果不存在将被⾃动创建
cassandra_consistency:设置读写操作的⼀致性
cassandra_timeout:读写操作的超时设定,单位为毫秒ms
cassandra_ssl:配置启⽤SSL连接
cassandra_ssl_verify:如果启⽤cassandra_ssl,则切换服务器证书验证。请参阅lua_ssl_trusted_certificate设置
cassandra_username:使⽤PasswordAuthenticator⽅案时的⽤户名
cassandra_password:使⽤PasswordAuthenticator⽅案时的⽤户密码
cassandra_consistency:读/写Cassandra集时使⽤的⼀致性设置
cassandra_lb_policy:在Cassandra集中分发查询时使⽤的负载均衡策略。接受的值是RoundRobin和DCAwareRoundRobin。当且仅当您使⽤多数据中⼼集时⽅可配置,此时,请同时配置cassandra_local_datacenter选项
cassandra_local_datacenter:当使⽤DCAwareRoundRobin策略时,必须在KONG节点中指定本地集的名称
cassandra_repl_strategy:如果是⾸次创建密钥空间,请指定复制策略
cassandra_repl_factor:指定SimpleStrategy的复制条件
cassandra_data_centers:指定NetworkTopologyStrategy的数据中⼼
节点相关:
cluster_listen:⽤于与集中的其他节点通信的地址和端⼝。同⼀集中的所有其他Kong节点必须能够通过TCP和UDP进⾏通信。只⽀持IPv4地址。默认值为 0.0.0.0:7946。
cluster_listen_rpc:⽤于通过此节点上运⾏的代理与集通信的地址和端⼝。仅包含此节点本地的TCP流量。默认为
127.0.0.1:7373。
cluster_advertise:缺省情况下,cluster-listen地址通过集发布。如果cluster_listen主机为“0.0.0.0”,则⾸个本地⾮环回IPv4地址将通告给其他节点。然⽽,在某些情况下(特别是NAT穿越),可能存在⽆法绑定路由地址。该标志可以通知不同的地址来⽀持这⼀点(This flag enables advertising a different address to support this)。
cluster_encrypt_key:基于Base64编码的16字节密钥,⽤于加密集通讯。
cluster_keyring_file:指定⼀个⽂件来加载密钥环数据。 Kong能够保持加密密钥同步并执⾏密钥回转。在密钥回转过程中,可能需要⼀段时间才能保留多个加密密钥,直到所有成员都收到新密钥为⽌。
cluster_ttl_on_failure:当集停⽌发送healthcheck ping(可能由节点或⽹络故障引起)时,节点的⽣存时间(单位为秒)。如果节点在到期之前⽆法发送新的healthcheck ping,则集中的其他节点将停⽌重新连接到该节点的操作。建议⾄少60。默认为3600秒。
cluster_profile:集间ping和超时的时序配置⽂件。如果通过互联⽹使⽤lan或local的配置⽂件,时序限制越紧越容易产⽣风险。可配置的值为local,lan,wan,默认为wan。
DNS解析器相关:
Kong会将主机名解析为SRV或A记录(按此顺序,CNAME记录将在该过程中被取消引⽤)。如果名称被解析为SRV记录,它还将通过从dns服务器接收的port字段内容来覆盖任何给定的端⼝号。对于ttl的持续时间,内部dns解析器将对通过dns记录中的条⽬的每个请求进⾏负载平衡。对于SRV记录,权重字段将被保留,但只会使⽤记录中最低优先级的字段条⽬。
dns_resolver:由逗号分隔的服务器名称列表,每个条⽬的格式为 ipv4 [:port]。如果未指定,将使⽤本地 f ⽂件中的服务器名称。如果省略,则默认端⼝号为53。
dns_hostsfile:hosts⽂件。该⽂件在启动时被读取⼀次,其在内存中是静态的。如果要修改此⽂件,必须重新加载服务。默认路径为 /etc/hosts。
开发者和其他相关:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论