Kong配置文件
在deepin系统下,Kong的配置文件在/etc/kong/目录下,我是用的是由kong.conf.default复制的kong.conf文件
通用部分
prefix
kong的工作路径,默认/usr/local/kong/,差生的日志文件等默认都在该目录下。
log_level
日志等级,默认是notice。日志的等级是[ debug | info | notice | warn | error | crit ],从左向右详细度依次递减
proxy_access_log
访问日志,默认是logs/access.log。可以修改自己的文件路径,如果是相对路径,会在前面加prefix的参数。当设置为off的时候,不写日志
proxy_error_log
错误日志,默认是logs/error.log。可以修改自己的文件路径,如果是相对路径,会在前面加prefix的参数
admin_access_log
管理访问日志,默认是logs/admin_access.log。其他同proxy_access_log参数
admin_error_log
管理错误日志,默认是logs/error.log。管理错误日志和访问错误日志在一个文件下,也可以分开,同时其错误日志等级依赖于log_level参数
status_access_log
状态访问日志,默认是off关闭。访问状态API的时候的访问日志,相对路径加prefix参数
status_error_log
状态错误日志,默认在logs/status_error.log。同时其错误日志等级依赖于log_level参数
plugins
插件列表,以逗号分割的字符串。在kong启动的时候会载入列表中的所有插件,当值为off的时候不装载任何插件。如果之前配置过插件但是没有在列表中,kong不能启动,所以当删除某个插件时,移除其所有实例,然后再重启。
go_pluginserver_exe
运行golang写的插件的路径,默认是/usr/local/bin/go-pluginserver
go_plugins_dir
golang写的插件的下载地址,默认是off。当值是off的时候不允许适用golang写的插件。
anonymous_reports
发送匿名报告给kong开发者,默认是on。
混合模式部分
role
混合模式中有两种角色,一种是控制节点,一种是数据节点。控制节点可以将自己的配置更新给数据节点。其中控制节点可以使用数据库,数据节点不使用数据库。
traditional 不使用混合模式
control_plane 控制节点
data_plane 数据节点
cluster_cert
当使用混合模式时,用于保证控制节点和数据节点信息安全的证书的文件名。使用kong hybrid命令创建证书/钥匙对。
cluster_cert_key
当使用混合模式时,用于保证控制节点和数据节点信息安全的证书钥匙的文件名。使用kong hybrid命令创建证书/钥匙对。
cluster_control_plane
仅使用于数据节点,指定要更新的配置来自于哪个控制节点,以host:port结构
cluster_listen
以逗号分割的host:port地址列表,指定哪些控制节点来监听数据节点的连接,仅使用于控制节点
Nginx部分(和Nginx配置相同)
proxy_listen
代理监听,以逗号分割的地址端口对,形如0.0.0.0:8001。是Kong的公共入口,通过其访问到后面的服务。
后缀可以配置配置每个地址对
后缀名 | 作用 |
---|---|
ssl | 要求所有连接都是基于安全传输层协议 |
http2 | 允许客户端与Kong建立http2连接 |
proxy_protocol | 对于监听的地址允许适用代理协议 |
deferred | 在Linux系统中适用延迟接受 |
bind | 对于指定的监听地址分开绑定 |
reuseport | 每个工作进程创建自己独立的socket |
backlog | 指定tcp队列的最大值,在linux系统中,要同时修改net.core.somaxconn和backlog才可以提升队列大小 |
stream_listen
流监听,以逗号分割的地址端口对,包含的后缀有proxy_protocol,bind, reuseport, backlog
admin_listen
管理监听,对于管理Api的访问监听,和参数和后缀proxy_listen相同
status_listen
状态监听,获取Kong节点的状态的访问监听
nginx_user
声明nginx的使用者
nginx_worker_processes
nginx的工作进程数,默认是auto,和内核数相同
nginx_daemon
nginx是否后台运行,默认是on,开启的状态
mem_cache_size
配置缓存大小,默认128m,也接受形如128k的参数样式
ssl_cert
安全证书的绝对路径
ssl_cert_key
安全证书秘钥的绝对路径
client_ssl
双向认证时,发送客户端证书,默认是off
client_ssl_cert
客户端安全证书的绝对路径
client_ssl_cert_key
客户端安全证书秘钥的绝对路径
admin_ssl_cert
管理api访问的安全证书绝对路径
admin_ssl_cert_key
管理api访问的安全证书秘钥绝对路径
headers
以后逗号分割的在返回给客户端时,需要在response的header中注入的内容
参数 | 内容 |
---|---|
Server | Kong/x.y.z,在由Kong产生的response中注入Kong的信息 |
Via | Kong/x.y.z,当成功访问Kong之后在response中注入Kong的信息 |
X-Kong-Proxy-Latency | 毫秒级时长,在通过Kong以及所有插件之后,还没有进入代理服务的时长 |
X-Kong-Response-Latency | 毫秒级时长,当由Kong产生的response,所用的时长 |
X-Kong-Upstream-Latency | 毫秒是时长,由后台产生response的时长 |
X-Kong-Admin-Latency | 毫秒级时长,管理api访问的时长 |
server_tokens | 相当于Server和Via |
latency_tokens | 包括上面的所有的时长参数 |
trusted_ips
可信IP,如果请求的IP在可信IP名单中,会在请求头的X-Forwarded-*中添加IP进来,如果不在可信名单中,则会在请求头的X-Forwarded-*中添加Kong自己的IP地址。形如192.168.1.0/24这样的掩码的形式表示。
real_ip_header
声明请求头的哪些key会被客户端真实IP替换。可选参数: X-Real-IP,X-Forwarded-For,proxy_protocol
real_ip_recursive
是否递归地排除直至得到用户ip,默认是关闭的
client_max_body_size
请求体的最大限制,单位是k或者m,如果设置为0,不检验其大小
client_body_buffer_size
读取请求体时的缓冲区大小,默认是8k
数据存储部分
database
默认是postgres,提供了两种选择,另一种cassandra(没用过,没听过)
postgres配置列表
配置名 | 解释 | 默认 |
---|---|---|
pg_host | 数据库地址 | 127.0.0.1 |
pg_port | 数据库端口号 | 5432 |
pg_timeout | 数据库链接,查询,写入超时时间(毫秒) | 5000 |
pg_user | 数据库用户名 | kong |
pg_password | 密码 | none |
pg_database | 要链接的数据库 | kong |
pg_schema | 数据库纲要(不会翻译,应该不重要) | none |
pg_ssl | 切换Kong与数据库的链接使用ssl | off |
pg_ssl_verify | 切换安全链接校验 | off |
pg_max_concurrent_queries | 并发最大的查询数 | 0不检验 |
pg_semaphore_timeout | 超时时长(超时会返回错误) | 60000 |
数据库缓存部分
未避免和数据库的无效链接,Kong缓存了配置实体,也处理实体更新后的失效。
db_update_frequency
数据更新频率,每隔多少秒,更新数据库中的对应的实体到缓存中,也就是说适用Admin Api进行操作并能够立即生效。默认是5秒
db_update_propagation
数据更新广播,实质上是数据库的同步,备份数据库的同步时长(秒)
db_cache_ttl
当把实体缓存到Kong缓存中,多长时间(秒)失效。默认是0,也就是永远不失效
db_resurrect_ttl
失效的缓存实体,间隔多长时间(秒)请求数据库刷新缓存,默认是30秒
db_cache_warmup_entities
默认是services, plugins,预加载模块到缓存中,提高了第一访问的速度。
DNS解析部分
默认情况下DNS解析会适用/etc/hosts和/etc/resolv.conf作为DNS解析的标准文件。
dns_resolver
dns解析器,已逗号分割的,形如localhost 127.0.0.1:5000, other 127.0.0.1:80
dns_hostfile
自定义hosts文件,默认是系统下的hosts文件
dns_order
dns处理顺序,LAST:上一次成功找到的记录
SRV: 权重记录
A: address地址记录
CNAME: 别名记录
dns_valid_ttl
dns记录有效时长
dns_stale_ttl
dns记录在过期之后,在刷新之前还会在多长(分钟)内被使用
dns_no_sync
同步开关,如果开启,每个没有命中dns缓存的请求都自己去查询dns
如果关闭,不同的请求都同步成一个dns查询
校准与性能部分
router_consistency
当使用admin api进行路由操作时,需要重建路由映射,strict模式,同步的重建路由, eventual模式,异步的进行重建路由,默认是strict模式
router_update_frequency
后台多久(秒)检测一次路由变更,默认是1秒,检测到变更立即重建路由