Kong配置文件属性详解

1. 基础部分

属性默认值备注
prefix/usr/local/kong工作目录。相当于Nginx的根目录,其中包含临时文件和日志文件。每个Kong进程必须有一个单独的工作目录。
log_levelnoticeNginx服务器的日志级别。日志可以在 /logs/error.log 中找到可用的配置参数,详见 http://nginx.org/en/docs/ngx_core_module.html#error_log
proxy_access_loglogs/access.log代理端口请求访问日志的路径。将此值设置off为禁用日志记录代理请求。如果此值是相对路径,它将被放置在该prefix位置下。
proxy_error_loglogs/error.log代理端口请求错误日志的路径。这些日志的粒度由log_level指令调整。
admin_access_loglogs/admin_access.logAdmin API请求访问日志的路径。将此值设置off为禁用记录Admin API请求。如果此值是相对路径,它将被放置在该prefix位置下。
admin_error_loglogs/error.logAdmin API请求错误日志的路径。这些日志的粒度由log_level指令调整。
custom_pluginsbundled以逗号分隔的此节点应加载的插件名称列表。默认情况下,仅通过bundled 关键字加载捆绑在官方发行版中的插件。加载插件默认情况下不会启用它,而只是指示Kong加载其源代码,并允许通过各种相关的Admin API端点配置插件。在Lua命名空间中,指定的名称将被替换为 kong.plugins.{name}.*。当将off关键字指定为唯一值时,将不会加载任何插件。bundled 和插件名称可以混合在一起,如以下示例所示:plugins=bundled,custom-auth,custom-log 将包括捆绑的插件以及两个自定义插件plugins=custom-auth,custom-log将仅包含custom-auth和 custom-log插件。plugins=off 将不包含任何插件注意:如果先前已配置了某些插件(即数据库中有行)且未在此列表中指定,则Kong不会启动。在禁用插件之前,请确保在重新启动Kong之前将其所有实例都删除。注意:在数据库缓存中遇到LRU搅动时(即,当配置的mem_cache_size已满时),限制可用插件的数量可以改善P99延迟 。
anonymous_reportson发送匿名的KONG使用数据,如错误堆栈等,以帮助改善Kong。

2. NGINX部分

属性默认值备注
proxy_listen0.0.0.0:8000, 0.0.0.0:8443 ssl代理服务器应在其上侦听的地址和端口的逗号分隔列表。代理服务器是Kong的公共入口点,它可以代理从您的消费者到后端服务的流量。该值接受IPv4,IPv6和主机名。
stream_listenoff流模式应在其上侦听的地址和端口的逗号分隔列表。该值接受IPv4,IPv6和主机名.
admin_listen127.0.0.1:8001, 127.0.0.1:8444 ssl逗号分隔的管理界面应侦听的地址和端口列表。管理员界面是一种API,可让您配置和管理Kong。访问这个接口应该被限制到香港管理员只。该值接受IPv4,IPv6和主机名。
nginx_usernobody nobody定义工作进程使用的用户和组凭据。如果省略组,则使用名称等于用户名的组。
nginx_worker_processesauto确定由Nginx产生的工作进程数。主要用于开发或在Docker环境中运行Kong时。请参见http://nginx.org/en/docs/ngx_core_module.html#worker_processes。
nginx_daemonon确定Nginx是作为守护程序运行还是作为前台进程运行。主要用于开发或在Docker环境中运行Kong时。
mem_cache_size128m数据库实体的内存中缓存的大小。可接受的单位为k和 m,最小建议值为几MB。
sslno确定Nginx是否应在该proxy_listen_ssl地址上侦听HTTPS流量 。如果禁用,Nginx将仅在上绑定自身proxy_listen,并且所有SSL设置都将被忽略。
ssl_cipher_suitemodern定义Nginx服务的TLS密码。可接受的值是modern, intermediate,old,或custom。
ssl_ciphersnone定义要由Nginx服务的TLS密码的自定义列表。此列表必须符合定义的模式openssl ciphers。如果ssl_cipher_suite不是,则忽略此值 custom。
ssl_certnone如果ssl启用,则为该proxy_listen_ssl地址的SSL证书的绝对路径 。如果未指定并ssl启用,则Kong将生成默认证书和密钥。
ssl_cert_keynone如果ssl启用,则为该proxy_listen_ssl地址的SSL密钥的绝对路径 。
http2off为该proxy_listen_ssl地址上的HTTPS流量启用HTTP2支持。
client_ssloff确定代理请求时Nginx是否应发送客户端SSL证书。
client_ssl_certnone如果client_ssl启用,则为proxy_ssl_certificate指令的客户端SSL证书的绝对路径。请注意,此值是在节点上静态定义的,当前无法基于每个API进行配置。
client_ssl_cert_keynone如果client_ssl启用,则为该proxy_ssl_certificate_key地址的客户端SSL密钥的绝对路径 。请注意,此值是在节点上静态定义的,当前无法基于每个API进行配置。
admin_sslno确定Nginx是否应在该admin_listen_ssl地址上侦听HTTPS流量 。如果禁用,Nginx将仅在上绑定自身 admin_listen,并且所有SSL设置都将被忽略。
admin_ssl_certnone如果admin_ssl启用,则为该admin_listen_ssl地址的SSL证书的绝对路径 。如果未指定并admin_ssl启用,则Kong将生成默认证书和密钥。
admin_ssl_cert_keynone如果admin_ssl启用,则为该admin_listen_ssl地址的SSL密钥的绝对路径 。
admin_http2off为该admin_listen_ssl地址上的HTTPS流量启用HTTP2支持。
Upstream_keepalive60设置在每个工作进程的缓存中保留的与上游服务器的空闲保持连接的最大数量。如果超过此数量,则关闭最近最少使用的连接。值0 将完全禁用此行为,从而强制每个上游请求打开一个新连接。
headersserver_tokens, latency_tokens客户应在响应中插入以逗号分隔的标题列表。Via、X-Kong-Proxy-Latency、X-Kong-Upstream-Latency、X-Kong-Upstream-Status、server_tokens、latency_tokens除此以外,可以将该值设置为off,以防止Kong注入上述任何标头。请注意,这不会阻止插件注入自己的标头。
Trusted_ipsnone定义已知可发送正确X-Forwarded-*报头的受信任IP地址块 。来自可信IP的请求使Kong向X-Forwarded-*上游转发其 标头。不可信的请求会使Kong插入自己的 X-Forwarded-*标头。
real_ip_headerX-Real-IP定义请求标头字段,其值将用于替换客户端地址。此值ngx_http_realip_module在Nginx配置中设置相同名称的指令。
real_ip_recursiveoff此值在Nginx配置中设置具有相同名称的ngx_http_realip_module指令。
client_max_body_size0定义在内容长度请求标头中指定的,由Kong代理的请求所允许的最大请求正文大小。如果请求超出此限制,则Kong将以413(请求实体太大)进行响应。将此值设置为0将禁用检查请求正文大小。有关client max body size documentation 此参数的进一步说明
client_body_buffer_size8k定义用于读取请求正文的缓冲区大小。如果客户端请求主体大于此值,则主体将被缓冲到磁盘。请注意,当主体被缓冲到磁盘上时,访问或操纵请求主体的插件可能无法工作,因此建议将该值设置为尽可能高的值(例如,将其设置为高 client_max_body_size以强制将请求主体保留在其中)记忆)。请注意,高并发环境将需要大量内存分配来处理许多并发的大型请求主体。有关client max body size documentation 此参数的进一步说明
error_default_typetext/plain当请求Accept标头丢失并且Nginx返回请求错误时使用的默认MIME类型。可接受的值是text/plain, text/html,application/json,和application/xml。

3. 数据库部分

database

       确定此节点将使用哪个PostgreSQL或Cassandra作为其数据存储。可接受的值为postgres和cassandra。

默认: postgres

Kong的配置解析器将#字符视为注释。如果您的数据库密码包含一个#字符,请使用对其进行转义#。

Postgres设置
名称默认值备注
pg_host127.0.0.1Postgres服务器的主机。
pg_port5432Postgres服务器的端口。
pg_userkongPostgres用户。
pg_passwordPostgres用户的密码。
pg_databasekong要连接的数据库。
pg_ssloff启用到服务器的SSL连接。
pg_ssl_verifyoff切换服务器证书验证(如果pg_ssl已启用)。参见lua_ssl_trusted_certificate设置。

Cassandra设置

名称默认值描述
cassandra_contact_points用逗号分隔的联系人列表指向您的Cassandra群集。
cassandra_port9042节点正在侦听的端口。您的所有节点和联系点必须在同一端口上侦听
cassandra_keyspacekong要在集群中使用的键空间。如果不存在,将被创建。
cassandra_consistencyONE读/写Cassandra集群时要使用的一致性设置
cassandra_timeout5000定义读写超时(以毫秒为单位)
cassandra_ssloff切换Kong和Cassandra之间的客户端到节点TLS连接。
cassandra_ssl_verifyoff切换服务器证书验证(如果cassandra_ssl已启用)。请参阅lua_ssl_trusted_certificate以指定证书颁发机构。
cassandra_usernamekong使用PasswordAuthenticator方案时的用户名。
cassandra_password使用PasswordAuthenticator方案时的密码。
cassandra_lb_policy在整个Cassandra群集中分配查询时要使用的负载平衡策略。可接受的值是RoundRobin,RequestRoundRobin,DCAwareRoundRobin和RequestDCAwareRoundRobin。以“请求”为前缀的策略会在整个同一请求中有效利用已建立的连接。仅当使用多数据中心群集时,才应使用“ DCAware”策略。
cassandra_local_datacenter使用DCAwareRoundRobin或RequestDCAwareRoundRobin平衡策略时,必须指定此Kong节点本地(最近)的群集的名称。
cassandra_repl_strategy首次迁移时,Kong将使用此设置来创建您的密钥空间。接受的值是SimpleStrategy和NetworkTopologyStrategy SimpleStrategy
cassandra_repl_factor1首次迁移时,Kong将在使用时使用此复制因子创建密钥空间SimpleStrategy。
cassandra_data_centersdc1:2,dc2:3首次迁移时,Kong将在使用时使用此设置NetworkTopologyStrategy。格式是由组成的逗号分隔列表<dc_name>:<repl_factor>。
cassandra_schema_consensus_timeout10000为Cassandra节点之间的每个架构共识定义等待时间的超时(以毫秒为单位)。此值仅在迁移期间使用。

4. 数据存储区缓存部分

       Kong将所有数据(例如路由,服务,使用者和插件)存储在Cassandra或PostgreSQL中,并且属于同一集群的所有Kong节点必须将自己连接到同一数据库。

Kong支持以下数据库版本:

  • PostgreSQL:9.5及以上。
  • Cassandra:2.2及更高版本。
属性默认值备注
db_update_frequency5使用数据存储库检查更新的实体的频率(以秒为单位)。当节点通过Admin API创建,更新或删除实体时,其他节点需要等待下一个轮询(由该值配置)才能最终清除旧的缓存实体并开始使用新的实体。
db_update_propagation0数据存储中的实体传播到另一个数据中心的副本节点所花费的时间(以秒为单位)。在分布式环境(如多数据中心Cassandra集群)中时,此值应为Cassandra将行传播到其他数据中心所花费的最大秒数。
db_cache_ttl0此节点缓存的实体在数据存储中的生存时间(以秒为单位)。数据库未命中(无实体)也将根据此设置进行高速缓存。如果设置为0(默认值),则此类缓存的实体或未命中永不过期。
db_resurrect_ttl30无法刷新数据存储中的陈旧实体的时间(以秒为单位)(例如,数据存储不可访问)。当此TTL过期时,将尝试刷新陈旧的实体。

5. DNS解析器部分

       默认情况下,DNS解析器将使用标准配置文件 /etc/hosts和/etc/resolv.conf。在后者的文件中的设置将被环境变量覆盖LOCALDOMAIN以及RES_OPTIONS他们是否已设置。

       Kong将主机名解析为SRV或A记录(按该顺序, CNAME记录将在此过程中被取消引用)。如果名称被解析为SRV记录,则它还将通过port从DNS服务器接收的字段内容覆盖任何给定的端口号。

       DNS选项SEARCH和NDOTS(来自/etc/resolv.conf文件)将用于将短名称扩展为完全限定的名称。因此,它将首先尝试使用SEARCH该SRV类型的整个列表,如果失败,它将尝试使用的SEARCH 列表A,等等。

       在的持续时间内ttl,内部DNS解析器将对通过DNS记录中的条目获得的每个请求进行负载平衡。对于SRV记录, weight将尊重字段,但是它将仅使用priority 记录中最低的字段条目。

属性默认值备注
dns_resolvernone以逗号分隔的名称服务器列表,每个条目的ip[:port]格式均由Kong使用。如果未指定,resolv.conf将使用本地文件中的名称服务器。如果省略,则端口默认为53。接受IPv4和IPv6地址。
Permalinkdns_hostsfile/etc/hosts要使用的主机文件。该文件被读取一次,其内容在内存中是静态的。要在修改后再次读取文件,必须重新加载Kong。
dns_orderLAST,SRV,A,CNAME解决不同记录类型的顺序。该LAST类型表示最后一次成功查找的类型(对于指定的名称)。格式是一个(不区分大小写)逗号分隔的列表。
dns_valid_ttlnone默认情况下,DNS记录使用响应的TTL值进行缓存。如果此属性收到一个值(以秒为单位),它将覆盖所有记录的TTL。
dns_stale_ttl4以秒为单位,定义一条记录在超过其TTL的时间内将保留在缓存中的时间。在后台获取新的DNS记录时将使用此值。从记录到期起将使用陈旧数据,直到刷新查询完成或经过dns_stale_ttl秒数为止。
dns_not_found_ttl30空DNS响应和“(3)名称错误”响应的TTL(以秒为单位)。
dns_error_ttl1TTL(秒),用于错误响应。
dns_no_syncoff如果启用,则在缓存丢失时,每个请求都将触发其自己的dns查询。禁用后,相同名称/类型的多个请求将同步到单个查询。

6. 开发和其他配置部分

从lua-nginx-module继承的其他设置允许更多的灵活性和高级用法。

有关lua-nginx-module documentation更多信息,请参见。

属性默认值备注
lua_ssl_trusted_certificatenonePEM格式的Lua cosocket的证书颁发机构文件的绝对路径。启用pg_ssl_verify或时,此证书将是用于验证Kong的数据库连接的证书cassandra_ssl_verify。
lua_ssl_verify_depth1设置Lua cosockets使用的服务器证书链中的验证深度,由设置lua_ssl_trusted_certificate。
lua_package_pathnone设置Lua模块搜索路径(LUA_PATH)。在开发或使用未存储在默认搜索路径中的自定义插件时很有用。
lua_package_cpathnone设置Lua C模块搜索路径(LUA_CPATH)。
lua_socket_pool_size30指定与每个远程服务器关联的每个cosocket连接池的大小限制。

备注

header配置项可选参数:
属性名备注
Server注入Server: kong/x.y.zKong产生的响应(例如Admin API,来自auth插件的拒绝请求等)。
ViaVia: kong/x.y.z为成功代理的请求注入。
X-Kong-Proxy-LatencyKong处理请求并运行所有插件之前向上游代理请求所花费的时间(以毫秒为单位)。
X-Kong-Upstream-Latency上游服务发送响应标头所用的时间(以毫秒为单位)。
X-Kong-Upstream-Status上游服务返回的HTTP状态代码。如果响应是由插件重写的,这对于客户端区分上游状态特别有用。
server_tokens与指定Server和相同Via。
latency_tokens与指定X-Kong-Proxy-Latency和 相同X-Kong-Upstream-Latency。
off不启动该功能

本文为原创文章,转载请注明出处。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

举个栗子の不容易

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值