Kong配置文件属性详解

Kong.conf 配置文件属性详解

    • 1. 基础部分
    • 2. NGINX部分
    • 3. 数据库部分
        • database
        • Postgres设置
    • 4. 数据存储区缓存部分
    • 5. DNS解析器部分
    • 6. 开发和其他配置部分
      • 备注
          • header配置项可选参数:

1. 基础部分

属性 默认值 备注
prefix /usr/local/kong 工作目录。相当于Nginx的根目录,其中包含临时文件和日志文件。每个Kong进程必须有一个单独的工作目录。
log_level notice Nginx服务器的日志级别。日志可以在 /logs/error.log 中找到可用的配置参数,详见 http://nginx.org/en/docs/ngx_core_module.html#error_log。
proxy_access_log logs/access.log 代理端口请求访问日志的路径。将此值设置off为禁用日志记录代理请求。如果此值是相对路径,它将被放置在该prefix位置下。
proxy_error_log logs/error.log 代理端口请求错误日志的路径。这些日志的粒度由log_level指令调整。
admin_access_log logs/admin_access.log Admin API请求访问日志的路径。将此值设置off为禁用记录Admin API请求。如果此值是相对路径,它将被放置在该prefix位置下。
admin_error_log logs/error.log Admin API请求错误日志的路径。这些日志的粒度由log_level指令调整。
custom_plugins bundled 以逗号分隔的此节点应加载的插件名称列表。默认情况下,仅通过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_reports on 发送匿名的KONG使用数据,如错误堆栈等,以帮助改善Kong。

2. NGINX部分

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

3. 数据库部分

database

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

默认: postgres

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

Postgres设置

名称 默认值 备注
pg_host 127.0.0.1 Postgres服务器的主机。
pg_port 5432 Postgres服务器的端口。
pg_user kong Postgres用户。
pg_password Postgres用户的密码。
pg_database kong 要连接的数据库。
pg_ssl off 启用到服务器的SSL连接。
pg_ssl_verify off 切换服务器证书验证(如果pg_ssl已启用)。参见lua_ssl_trusted_certificate设置。

Cassandra设置

名称 默认值 描述
cassandra_contact_points 用逗号分隔的联系人列表指向您的Cassandra群集。
cassandra_port 9042 节点正在侦听的端口。您的所有节点和联系点必须在同一端口上侦听
cassandra_keyspace kong 要在集群中使用的键空间。如果不存在,将被创建。
cassandra_consistency ONE 读/写Cassandra集群时要使用的一致性设置
cassandra_timeout 5000 定义读写超时(以毫秒为单位)
cassandra_ssl off 切换Kong和Cassandra之间的客户端到节点TLS连接。
cassandra_ssl_verify off 切换服务器证书验证(如果cassandra_ssl已启用)。请参阅lua_ssl_trusted_certificate以指定证书颁发机构。
cassandra_username kong 使用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_factor 1 首次迁移时,Kong将在使用时使用此复制因子创建密钥空间SimpleStrategy。
cassandra_data_centers dc1:2,dc2:3 首次迁移时,Kong将在使用时使用此设置NetworkTopologyStrategy。格式是由组成的逗号分隔列表:
cassandra_schema_consensus_timeout 10000 为Cassandra节点之间的每个架构共识定义等待时间的超时(以毫秒为单位)。此值仅在迁移期间使用。

4. 数据存储区缓存部分

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

Kong支持以下数据库版本:

  • PostgreSQL:9.5及以上。
  • Cassandra:2.2及更高版本。
属性 默认值 备注
db_update_frequency 5 使用数据存储库检查更新的实体的频率(以秒为单位)。当节点通过Admin API创建,更新或删除实体时,其他节点需要等待下一个轮询(由该值配置)才能最终清除旧的缓存实体并开始使用新的实体。
db_update_propagation 0 数据存储中的实体传播到另一个数据中心的副本节点所花费的时间(以秒为单位)。在分布式环境(如多数据中心Cassandra集群)中时,此值应为Cassandra将行传播到其他数据中心所花费的最大秒数。
db_cache_ttl 0 此节点缓存的实体在数据存储中的生存时间(以秒为单位)。数据库未命中(无实体)也将根据此设置进行高速缓存。如果设置为0(默认值),则此类缓存的实体或未命中永不过期。
db_resurrect_ttl 30 无法刷新数据存储中的陈旧实体的时间(以秒为单位)(例如,数据存储不可访问)。当此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_resolver none 以逗号分隔的名称服务器列表,每个条目的ip[:port]格式均由Kong使用。如果未指定,resolv.conf将使用本地文件中的名称服务器。如果省略,则端口默认为53。接受IPv4和IPv6地址。
Permalinkdns_hostsfile /etc/hosts 要使用的主机文件。该文件被读取一次,其内容在内存中是静态的。要在修改后再次读取文件,必须重新加载Kong。
dns_order LAST,SRV,A,CNAME 解决不同记录类型的顺序。该LAST类型表示最后一次成功查找的类型(对于指定的名称)。格式是一个(不区分大小写)逗号分隔的列表。
dns_valid_ttl none 默认情况下,DNS记录使用响应的TTL值进行缓存。如果此属性收到一个值(以秒为单位),它将覆盖所有记录的TTL。
dns_stale_ttl 4 以秒为单位,定义一条记录在超过其TTL的时间内将保留在缓存中的时间。在后台获取新的DNS记录时将使用此值。从记录到期起将使用陈旧数据,直到刷新查询完成或经过dns_stale_ttl秒数为止。
dns_not_found_ttl 30 空DNS响应和“(3)名称错误”响应的TTL(以秒为单位)。
dns_error_ttl 1 TTL(秒),用于错误响应。
dns_no_sync off 如果启用,则在缓存丢失时,每个请求都将触发其自己的dns查询。禁用后,相同名称/类型的多个请求将同步到单个查询。

6. 开发和其他配置部分

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

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

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

备注

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

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

你可能感兴趣的:(Kong)