常规设置
prefix
工作目录。等效于Nginx的前缀路径,包含临时文件和日志。
每个Kong进程必须有一个单独的工作目录。
默认: /usr/local/kong/
log_level
Nginx服务器的日志级别。日志位于<prefix>/logs/error.log。
可接受值ebug, info, notice, warn, error, crit, alert, emerg
默认: notice
proxy_access_log
代理端口请求访问日志的路径。将此值设置off为禁用日志记录代理请求。
如果此值是相对路径,则将其放置在该prefix 位置下。
默认: logs/access.log
proxy_error_log
代理端口请求错误日志的路径。这些日志的粒度由log_level属性调整。
默认: logs/error.log
admin_access_log
Admin API请求访问日志的路径。如果启用了混合模式,并且当前节点设置为控制平面,则来自数据平面的连接请求也将被写入服务器名称为“ kong_cluster_listener”的该文件。
将此值设置off为禁用记录Admin API请求。
如果此值是相对路径,则将其放置在该prefix 位置下。
默认: logs/admin_access.log
admin_error_log
Admin API请求错误日志的路径。这些日志的粒度由log_level属性调整。
默认: logs/error.log
status_access_log
Status API请求访问日志的路径。默认值off意味着默认情况下禁用此API的loggin。
如果此值是相对路径,则将其放置在该prefix 位置下。
默认: off
status_error_log
Status API请求错误日志的路径。这些日志的粒度由log_level属性调整。
默认: logs/status_error.log
plugins
以逗号分隔的此节点应加载的插件列表。默认情况下,仅通过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之前将其所有实例都删除。
注意:限制可用插件的数量可以在数据库高速缓存中遇到LRU搅动时(即,当configuremem_cache_size满时)改善P99延迟 。
默认: bundled
pluginserver_names
插件服务器进程名称的逗号分隔列表。实际名称用于日志消息并与实际设置相关。
默认值:无
pluginserver_XXX_socket
unix套接字所使用的路径 插件服务器。
默认: <prefix>/<XXX>.socket
pluginserver_XXX_start_cmd
完整命令(包括任何所需的参数)以启动 插件服务器
默认: /usr/local/bin/<XXX>
pluginserver_XXX_query_cmd
使用完整命令“查询” 插件服务器。应该使用其管理的所有插件的转储信息生成JSON
默认: /usr/local/bin/query_<XXX>
port_maps
使用此配置参数,您可以让Kong知道将数据包转发到的端口。在容器化或虚拟化环境中运行Kong时,这很常见。
例如,port_maps=80:8000, 443:8443指示Kong将端口80映射到8000(端口443映射到8443),其中8000和8443是Kong正在侦听的端口。
此参数可帮助Kong设置适当的转发上游HTTP请求标头,或使用Kong PDK获取正确的转发端口(以其他方式确定失败)。它更改了目标端口的路由,也将数据包从该端口转发到Kong的端口进行了路由,并且类似地,它更改了默认插件日志序列化程序以根据此映射使用该端口,而不是报告Kong正在侦听的端口。
默认值:无
anonymous_reports
发送匿名使用数据(例如错误堆栈跟踪)以帮助改进Kong。
默认: on
混合模式设置
role
使用此设置可以启用混合模式。这允许在控制平面角色中使用数据库运行某些Kong节点,并使它们将配置更新传递给其他运行到以Data Plane角色运行的无DB的节点。
此设置的有效值为:
traditional:请勿使用混合模式。
control_plane:此节点以控制平面角色运行。它可以使用数据库,并将配置更新传递到数据平面节点。
data_plane:这是一个数据平面节点。它运行无数据库,并从控制平面节点接收配置更新。
默认: traditional
cluster_mtls
设置集群节点之间的验证。
此设置的有效值为:
shared:使用通过cluster_cert 和cluster_cert_key设置指定的共享证书/密钥对。请注意,CP和DP节点必须出示相同的证书才能建立mTLS连接。
pki:使用cluster_ca_cert,cluster_server_name并cluster_cert进行验证。这些是每个DP节点的不同证书,但是由群集范围内的通用CA证书颁发:cluster_ca_cert。
默认: shared
cluster_cert
在控制平面和数据平面节点之间建立安全通信时要使用的群集证书的文件名。
您可以使用该kong hybrid命令生成证书/密钥对。
在shared模式下,所有节点的名称必须相同。在pki模式下,每个DP节点都应使用不同的证书。
默认值:无
cluster_cert_key
在控制平面和数据平面节点之间建立安全通信时要使用的群集证书密钥的文件名。
您可以使用该kong hybrid命令生成证书/密钥对。
在shared模式下,所有节点的名称必须相同。在pki模式下,每个DP节点都应使用不同的证书。
默认值:无
cluster_ca_cert
PEM格式的受信任CA证书文件,用于验证 cluster_cert。
如果cluster_mtls设置为pki,则为必需,否则忽略。
默认值:无
混合模式数据设置
cluster_server_name
从DP节点到CP节点的TLS连接的SNI中使用的服务器名称。
必须与CP证书中的通用名称(CN)或主题备用名称(SAN)匹配。
如果cluster_mtls设置为shared,则将忽略并kong_clustering使用此设置 。
默认值:无
cluster_control_plane
仅由数据平面节点使用:host:port格式将从中获取配置更新的控制平面节点的地址。
默认值:无
cluster_telemetry_endpoint
仅由数据平面节点使用:遥测更新将以host:port格式发布到的控制平面节点的遥测地址。
默认值:无
混合模式控制设置
cluster_listen
集群控制平面服务器应在其上侦听数据平面连接的地址和端口的逗号分隔列表。
控制平面的集群通信端口必须可由同一集群中的所有数据平面访问。此端口受mTLS保护,以确保端到端的安全性和完整性。
如果role未设置为,则此设置无效control_plane。
与此端点建立的连接记录到与Admin API访问日志相同的位置。
有关admin_access_log更多信息,请参见配置说明。
默认: 0.0.0.0:8005
cluster_telemetry_listen
集群控制平面服务器应在其上侦听数据平面遥测连接的地址和端口的逗号分隔列表。
控制平面的集群通信端口必须可由同一集群中的所有数据平面访问。
如果role未设置为,则此设置无效control_plane。
默认: 0.0.0.0:8006
cluster_data_plane_purge_delay
从/ clustering / data-planes Admin API端点返回的值,从DP节点脱机到从数据库中删除其条目之间必须经过多少秒。
这是为了防止群集数据平面表无限期增长。默认设置为14天。也就是说,如果CP已14天未收到DP的消息,它将被删除。
默认: 1209600
NGINX部分
proxy_listen
代理服务器应在其上侦听HTTP / HTTPS通信的地址和端口的逗号分隔列表。
代理服务器是Kong的公共入口点,它可以代理从您的消费者到后端服务的流量。此值接受IPv4,IPv6和主机名。
可以为每对指定一些后缀:
ssl 将要求通过特定地址/端口进行的所有连接都必须启用TLS。
http2 将允许客户端打开与Kong的代理服务器的HTTP / 2连接。
proxy_protocol 将启用对给定地址/端口的PROXY协议的使用。
deferred 指示在Linux上使用延迟接受(TCP_DEFER_ACCEPT套接字选项)。
bind 指示对给定的address:port对进行单独的bind()调用。
reuseport 指示为每个工作进程创建一个单独的侦听套接字,从而使内核可以更好地在工作进程之间分配传入的连接
backlog=N设置挂起的TCP连接队列的最大长度。此数字不应太小,以防止客户端看到“连接被拒绝”错误连接到繁忙的Kong实例。注意:在Linux上,此值受net.core.somaxconn内核参数设置的限制。为了使较大的backlog设置在这里生效,必须同时加注net.core.somaxconn以匹配或超过backlog设置的数字。
可以将该值设置为off,从而为此节点禁用HTTP / HTTPS代理端口。
如果stream_listen也设置为off,这将为此节点启用“控制平面”模式(在该模式下,所有流量代理功能均被禁用)。然后,该节点只能用于配置连接到同一数据存储的Kong节点的集群。
例子: proxy_listen = 0.0.0.0:443 ssl, 0.0.0.0:444 http2 ssl
有关此*_listen值和其他值的可接受格式的说明,请参见http://nginx.org/en/docs/http/ngx_http_core_module.html#listen 。
有关该proxy_protocol参数的更多详细信息,请参见https://www.nginx.com/resources/admin-guide/proxy-protocol/ 。
并非所有*_listen值都接受nginx文档中指定的所有格式。
默认: 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport backlog=16384
proxy_url
Kong Proxy节点的查找或平衡器地址。
此值通常用于微服务或面向服务网格的体系结构中。
可接受的格式(括号中的部分是可选的):
<scheme>://<IP / HOSTNAME>(:<PORT>(/<PATH>))
例子:
<scheme>://<IP>:<PORT> -> proxy_url = http://127.0.0.1:8000
SSL <scheme>://<HOSTNAME> -> proxy_url = https://proxy.domain.tld
<scheme>://<HOSTNAME>/<PATH> -> proxy_url = http://dev-machine/dev-285
默认情况下,Kong Manager和Kong Portal将使用窗口请求主机,并根据请求的协议附加解析的侦听器端口。
默认值:无
stream_listen
流模式应在其上侦听的地址和端口的逗号分隔列表。
此值接受IPv4,IPv6和主机名。
可以为每对指定一些后缀:
ssl 将要求通过特定地址/端口进行的所有连接都必须启用TLS。
proxy_protocol 将启用对给定地址/端口的PROXY协议的使用。
bind 指示对给定的address:port对进行单独的bind()调用。
reuseport 指示为每个工作进程创建一个单独的侦听套接字,从而使内核可以更好地在工作进程之间分配传入的连接
backlog=N设置挂起的TCP连接队列的最大长度。此数字不应太小,以防止客户端看到“连接被拒绝”错误连接到繁忙的Kong实例。注意:在Linux上,此值受net.core.somaxconn内核参数设置的限制。为了使较大的backlog设置在这里生效,必须同时加注net.core.somaxconn以匹配或超过backlog设置的数字。
注:在ssl不支持后缀,每个地址/端口将接受TCP有或没有启用TLS。
例子:
stream_listen = 127.0.0.1:7000 reuseport backlog=16384
stream_listen = 0.0.0.0:989 reuseport backlog=65536, 0.0.0.0:20
stream_listen = [::1]:1234 backlog=16384
默认情况下,此值设置为off,因此为此节点禁用流代理端口。
有关Kong可以在stream_listen中接受的格式的说明,请参见http://nginx.org/en/docs/stream/ngx_stream_core_module.html#listen。
默认: off
admin_api_uri
URI的层次结构部分,可选地由Admin API接受HTTP或HTTPS流量的主机,端口和路径组成。禁用此配置后,Kong Manager将使用窗口协议+主机并附加已解析的admin_listen HTTP / HTTPS端口。
默认值:无
admin_listen
管理员界面应在其上侦听的地址和端口的逗号分隔列表。
管理界面是API,可用于配置和管理Kong。
访问这个接口应该被限制到香港管理员只。此值接受IPv4,IPv6和主机名。
可以为每对指定一些后缀:
ssl 将要求通过特定地址/端口进行的所有连接都必须启用TLS。
http2 将允许客户端打开与Kong的代理服务器的HTTP / 2连接。
proxy_protocol 将启用对给定地址/端口的PROXY协议的使用。
deferred 指示在Linux上使用延迟接受(TCP_DEFER_ACCEPT套接字选项)。
bind 指示对给定的address:port对进行单独的bind()调用。
reuseport 指示为每个工作进程创建一个单独的侦听套接字,从而使内核可以更好地在工作进程之间分配传入的连接
backlog=N设置挂起的TCP连接队列的最大长度。此数字不应太小,以防止客户端看到“连接被拒绝”错误连接到繁忙的Kong实例。注意:在Linux上,此值受net.core.somaxconn内核参数设置的限制。为了使较大的backlog设置在这里生效,必须同时加注net.core.somaxconn以匹配或超过backlog设置的数字。
可以将该值设置为off,从而禁用此节点的Admin接口,从而启用“数据平面”模式(无配置功能)从数据库中提取其配置更改。
例子: admin_listen = 127.0.0.1:8444 http2 ssl
默认: 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384
status_listen
状态API应在其上侦听的地址和端口的逗号分隔列表。
Status API是只读端点,允许监视工具检索当前Kong节点的指标,健康状况和其他非敏感信息。
可以为每对指定以下后缀:
ssl 将要求通过特定地址/端口进行的所有连接都必须启用TLS。
可以将此值设置为off,为此节点禁用状态API。
例子: status_listen = 0.0.0.0:8100
默认: off
nginx_user
定义工作进程使用的用户和组凭据。如果省略组,则使用名称等于用户名的组。
例子: nginx_user = nginx www
注意:如果kong用户和kong组不可用,则默认的用户和组凭据将为nobody nobody。
默认: kong kong
nginx_worker_processes
确定由Nginx产生的工作进程数。
有关等效的Nginx指令的详细用法和可接受值的说明,请参见http://nginx.org/en/docs/ngx_core_module.html#worker_processes。
默认: auto
nginx_daemon
确定Nginx是作为守护程序运行还是作为前台进程运行。主要用于开发或在Docker环境中运行Kong时。
请参阅http://nginx.org/en/docs/ngx_core_module.html#daemon。
默认: on
mem_cache_size
数据库实体的两个内存中每个缓存的大小。可接受的单位为k和m,最小建议值为几MB。
注意:由于此选项控制两个不同的缓存条目的大小,因此Kong用于缓存实体的总内存可能是该值的两倍。
默认: 128m
ssl_cipher_suite
定义Nginx服务的TLS密码。
可接受的值是modern,intermediate,old,或custom。
有关每个密码套件的详细说明,请参见https://wiki.mozilla.org/Security/Server_Side_TLS。
默认: intermediate
ssl_ciphers
定义要由Nginx服务的TLS密码的自定义列表。此列表必须符合定义的模式openssl ciphers。
如果ssl_cipher_suite不是,则忽略此值custom。
默认值:无
ssl_protocols
为客户端连接启用指定的协议。支持的协议版本集还取决于构建时所用的OpenSSL Kong版本。如果ssl_cipher_suite不是,则忽略此值custom。
参见http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols
默认: TLSv1.1 TLSv1.2 TLSv1.3
ssl_prefer_server_ciphers
指定当使用SSLv3和TLS协议时,服务器密码应优先于客户端密码。如果ssl_cipher_suite 不是,则忽略此值custom。
请参阅http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers
默认: on
ssl_dhparam
定义DH参数用于从所述预定义的组DHE密码:ffdhe2048, ffdhe3072,ffdhe4096,ffdhe6144,ffdhe8192,或从一个参数文件的绝对路径。
如果ssl_cipher_suite为modern或,则忽略此值intermediate。原因是modern没有密码需要intermediate使用 该密码ffdhe2048。
参见http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam
默认值:无
ssl_session_tickets
通过TLS会话票证启用或禁用会话恢复。与TLSv1.3一起使用时,这没有影响。
出于性能原因,Kong默认情况下启用了此功能,但是它具有安全隐患:https://github.com/mozilla/server-side-tls/issues/135
参见http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_tickets
默认: on
ssl_session_timeout
指定客户端可以重用会话参数的时间。见原理:https://github.com/mozilla/server-side-tls/issues/198
参见http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout
默认: 1d
ssl_cert
proxy_listen启用了SSL的值的SSL证书的绝对路径。
默认值:无
ssl_cert_key
proxy_listen启用了SSL的值的SSL密钥的绝对路径。
默认值:无
client_ssl
确定代理请求时Nginx是否应发送客户端SSL证书。
默认: off
client_ssl_cert
如果client_ssl启用,则为proxy_ssl_certificate指令的客户端SSL证书的绝对路径。请注意,此值是在节点上静态定义的,当前无法基于每个API进行配置。
默认值:无
client_ssl_cert_key
如果client_ssl启用,则为该proxy_ssl_certificate_key地址的客户端SSL密钥的绝对路径 。请注意,此值是在节点上静态定义的,当前无法基于每个API进行配置。
默认值:无
admin_ssl_cert
admin_listen启用了SSL的值的SSL证书的绝对路径。
默认值:无
admin_ssl_cert_key
admin_listen启用了SSL的值的SSL密钥的绝对路径。
默认值:无
status_ssl_cert
status_listen启用了SSL的值的SSL证书的绝对路径。
默认值:无
status_ssl_cert_key
status_listen启用了SSL的值的SSL密钥的绝对路径。
默认值:无
headers
客户应在响应中插入以逗号分隔的标题列表。
可接受的值为:
Server:注入Server: kong/x.y.zKong产生的响应(例如Admin API,来自auth插件的拒绝请求)。
Via:Via: kong/x.y.z为成功代理的请求注入。
X-Kong-Proxy-Latency:Kong处理请求并运行所有插件在向上游代理请求之前花费的时间(毫秒)。
X-Kong-Response-Latency:例如插件使请求短路或出现错误时,Kong产生响应所花费的时间(以毫秒为单位)。
X-Kong-Upstream-Latency:上游服务发送响应标头所用的时间(以毫秒为单位)。
X-Kong-Admin-Latency:Kong处理Admin API请求所花费的时间(以毫秒为单位)。
X-Kong-Upstream-Status:上游服务返回的HTTP状态代码。如果响应由插件重写,这对于客户端区分上游状态特别有用。
server_tokens:与指定Server和相同Via。
latency_tokens:同指定X-Kong-Proxy-Latency, X-Kong-Response-Latency,X-Kong-Admin-Latency和 X-Kong-Upstream-Latency
除此以外,可以将该值设置为off,以防止Kong注入上述任何标头。请注意,这不会阻止插件注入自己的标头。
例子: headers = via, latency_tokens
默认: server_tokens, latency_tokens
Trusted_ips
定义已知可发送正确X-Forwarded-*报头的受信任IP地址块 。
来自受信任IP的请求使Kong向X-Forwarded-*上游转发其标头。
不可信的请求使Kong插入自己的X-Forwarded-*标头。
此属性还可以set_real_ip_from在Nginx配置中设置指令。它接受相同类型的值(CIDR块),但以逗号分隔的列表形式。
要信任所有/!\ IP,请将此值设置为0.0.0.0/0,::/0。
如果unix:指定了特殊值,则将信任所有UNIX域套接字。
有关可接受值的示例,请参见http://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from。
默认值:无
real_ip_header
定义请求标头字段,其值将用于替换客户端地址。
此值ngx_http_realip_module在Nginx配置中设置相同名称的指令。
如果此值收到proxy_protocol:
至少其中一项proxy_listen必须proxy_protocol 启用该标志。
该proxy_protocol参数将附加到listenNginx模板的指令中。
有关此指令的说明,请参见http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header。
默认: X-Real-IP
real_ip_recursive
此值ngx_http_realip_module在Nginx配置中设置相同名称的指令。
有关此指令的说明,请参见http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive。
默认: off
error_default_type
当Accept缺少请求标头并且Nginx返回请求错误时使用的默认MIME类型。
可接受的值是text/plain,text/html,application/json,和 application/xml。
默认: text/plain
Upstream_keepalive_pool_size
设置上游Keepalive连接池的默认大小。
上游keepalive连接池按dst ip/dst port/SNI 连接属性进行细分。
值0默认将禁用上游保持连接,强制每个上游请求打开一个新连接。
默认: 60
Upstream_keepalive_max_requests
设置默认的最大请求数,该数目是通过一个keepalive连接可以在上游代理的最大请求数。
达到最大请求数后,连接将关闭。
值为0将会禁用此行为,并且可以使用keepalive连接来代理无限数量的请求。
默认: 100
Upstream_keepalive_idle_timeout
设置默认超时(以秒为单位),上游保持连接应保持此默认超时。如果在尚未重用连接的情况下达到超时,它将被关闭。
值为0将会禁用此行为,并且空闲的keepalive连接可能会无限期保持打开状态。
默认: 60
NGINX注入指令部分
Nginx指令可以动态地注入到运行时nginx.conf文件中,而无需自定义Nginx配置模板。
所有遵循命名方案的配置属性 nginx_<namespace>_<directive>都将导致<directive>被注入与该属性对应的Nginx配置块中<namespace>。
例子: nginx_proxy_large_client_header_buffers = 8 24k
将以下指令插入Kong的代理server {
}区块中:
large_client_header_buffers 8 24k;
支持以下名称空间:
nginx_main_<directive>:注入<directive>Kong的配置 main上下文。
nginx_events_<directive>:注入<directive>孔的events {
} 块。
nginx_http_<directive>:注入<directive>孔的http {
}块。
nginx_proxy_<directive>:注入<directive>Kong的代理server {
} 区块。
nginx_upstream_<directive>:注入<directive>Kong的代理upstream {
}区块。
nginx_admin_<directive>:插入<directive>Kong的Admin APIserver {
}块。
nginx_status_<directive>:注入<directive>Kong的Status API server {
}块(仅在status_listen启用后才有效)。
nginx_stream_<directive>:注入<directive>Kong的流模块 stream {
}块(仅在stream_listen启用后才有效)。
nginx_sproxy_<directive>:注入<directive>Kong的流模块 server {
}块(仅在stream_listen启用后才有效)。
nginx_supstream_<directive>:注入<directive>Kong的流模块 upstream {
}块。
与其他配置属性一样,Nginx伪指令在使用大写字母和前缀时可以通过环境变量注入KONG_。
示例:KONG_NGINX_HTTP_SSL_PROTOCOLS->nginx_http_ssl_protocols
将在Kong的http {
}区块中插入以下指令:
ssl_protocols <value>;
如果代理服务器和Admin API服务器之间需要不同的协议集,则可以指定nginx_proxy_ssl_protocols和/或 nginx_admin_ssl_protocols,这两个协议优先于该http {
} 块。
nginx_main_worker_rlimit_nofile
更改工作进程最大打开文件数限制。
特殊的默认值auto将此值设置为ulimit -n,上限限制为16384,以防止过度使用内存。
参见http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile
默认: auto
nginx_events_worker_connections
设置工作进程可以打开的最大同时连接数。
特殊的默认值auto将此值设置为ulimit -n,上限限制为16384,以防止过度使用内存。
参见http://nginx.org/en/docs/ngx_core_module.html#worker_connections
默认: auto
nginx_http_client_header_buffer_size
设置用于读取客户端请求标头的缓冲区大小。
参见http://nginx.org/en/docs/http/ngx_http_core_module.html#client_header_buffer_size
默认: 1k
nginx_http_large_client_header_buffers
设置用于读取大型客户端请求标头的缓冲区的最大数量和大小。
参见http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers
默认: 4 8k
nginx_http_client_max_body_size
定义在内容长度请求标头中指定的,由Kong代理的请求所允许的最大请求正文大小。如果请求超出此限制,则Kong将以413(请求实体太大)进行响应。将此值设置为0将禁用检查请求正文大小。
参见http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
默认: 0
nginx_admin_client_max_body_size
定义Admin API的最大请求正文大小。
默认: 10m
nginx_http_client_body_buffer_size
定义用于读取请求正文的缓冲区大小。如果客户端请求主体大于此值,则主体将被缓冲到磁盘。请注意,当主体被缓冲到磁盘上时,访问或操纵请求主体的Kong插件可能无法工作,因此建议将此值设置得尽可能高(例如,将其设置为尽可能高client_max_body_size以强制保留请求主体)在记忆中)。请注意,高并发环境将需要大量内存分配来处理许多并发的大型请求主体。
参见http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size
默认: 8k
nginx_admin_client_body_buffer_size
定义用于读取Admin API上的请求正文的缓冲区大小。
默认: 10m
数据存储区
Kong可以与数据库一起运行,以在集群中的Kong节点之间存储协调的数据,也可以不使用数据库,数据库中的每个节点都将其信息独立存储在内存中。
使用数据库时,Kong将在Cassandra或PostgreSQL中存储其所有实体(如Routes,Services,Consumer和Plugins)的数据,并且属于同一集群的所有Kong节点必须将自己连接到同一数据库。
Kong支持以下数据库版本:
PostgreSQL:9.5及以上。
Cassandra:2.2及更高版本。
当不使用数据库时,Kong被称为“无数据库模式”:它将实体保存在内存中,并且每个节点都需要通过声明性配置文件输入此数据,该文件可以通过declarative_config属性指定 ,或通过使用/config 端点的Admin API 。
使用Postgres作为后端存储时,可以选择启用Kong来提供来自单独数据库实例的读取查询。
当代理数量很大时,这可以大大减少主Postgres实例的负载并获得更好的可伸缩性。如果Kong代理节点到主要Postgres实例的等待时间较长,也可以减少等待时间抖动。
只读Postgres实例仅提供读取查询,而写入查询仍进入主连接。从主实例复制更改时,只读的Postgres实例最终可以保持一致。
至少pg_ro_host需要配置才能启用此功能。
默认情况下,只读连接的所有其他数据库配置都继承自上述相应的主连接配置,但可以选择使用pg_ro_*下面的配置显式覆盖。
database
确定此节点将使用哪个PostgreSQL或Cassandra作为其数据存储。
可接受的值是postgres,cassandra和off。
默认: postgres
Postgres settings
姓名 描述 默认
pg_host Postgres服务器的主机。 127.0.0.1
pg_port Postgres服务器的端口。 5432
pg_timeout 定义用于连接,读取和写入的超时(以毫秒为单位)。 5000
pg_user Postgres用户。 kong
pg_password Postgres用户的密码。 没有
pg_database 要连接的数据库名称。 kong
pg_schema 要使用的数据库架构。如果未指定,则Kong将尊重search_path您PostgreSQL实例的价值。 没有
pg_ssl 切换Kong和PostgreSQL之间的客户端-服务器TLS连接。因为PostgreSQL对TLS和非TLS使用相同的端口,所以这仅是一个提示。如果服务器不支持TLS,则建立的连接将是普通连接。 off
pg_ssl_version 在Kong和PostgreSQL之间使用ssl时,要使用的tls版本。可接受的值为tlsv1或tlsv1_2 tlsv1
pg_ssl_required 如果pg_ssl是在这个确定TLS必须岗和PostgreSQL之间使用。如果服务器不支持SSL连接,它将中止连接。 off
pg_ssl_verify 切换服务器证书验证(如果pg_ssl已启用)。请参阅lua_ssl_trusted_certificate设置以指定证书颁发机构。 off
pg_ssl_cert PostgreSQL连接的PEM编码的客户端TLS证书的绝对路径。只有设置了该值,才启用针对PostgreSQL的TLS相互身份验证。 没有
pg_ssl_cert_key 如果pg_ssl_cert设置,则为PostgreSQL连接的PEM编码的客户端TLS私钥的绝对路径。 没有
pg_max_concurrent_queries 设置在任何给定时间可以执行的最大并发查询数。此限制是针对每个工作进程执行的;该节点的并发查询总数将为pg_max_concurrent_queries * nginx_worker_processes。默认值0消除了此并发限制。 0
pg_semaphore_timeout 定义超时(以毫秒为单位),在此超时后PostgreSQL查询信号资源获取尝试将失败。此类故障通常会导致关联的代理或Admin API请求失败,并显示HTTP 500状态代码。联机文档中提供了有关此行为的详细讨论。 60000
pg_keepalive_timeout 定义到PostreSQL服务器的空闲连接保持活动的时间(以毫秒为单位)。 60000
pg_ro_host 与相同pg_host,但用于只读连接。注意:有关详细用法,请参阅上面的文档部分。 没有
pg_ro_port 与相同pg_port,但用于只读连接。 <pg_port>
pg_ro_timeout 与相同pg_timeout,但用于只读连接。 <pg_timeout>
pg_ro_user 与相同pg_user,但用于只读连接。 <pg_user>
pg_ro_password 与相同pg_password,但用于只读连接。 <pg_password>
pg_ro_database 与相同pg_database,但用于只读连接。 <pg_database>
pg_ro_schema 与相同pg_schema,但用于只读连接。 <pg_schema>
pg_ro_ssl 与相同pg_ssl,但用于只读连接。 <pg_ssl>
pg_ro_ssl_required 与相同pg_ssl_required,但用于只读连接。 <pg_ssl_required>
pg_ro_ssl_verify 与相同pg_ssl_verify,但用于只读连接。 <pg_ssl_verify>
pg_ro_ssl_version 与相同pg_ssl_version,但用于只读连接。 <pg_ssl_version>
pg_ro_max_concurrent_queries 与相同pg_max_concurrent_queries,但用于只读连接。注意:只读并发不与主(读写)连接共享。 <pg_max_concurrent_queries>
pg_ro_semaphore_timeout 与相同pg_semaphore_timeout,但用于只读连接。 <pg_semaphore_timeout>
pg_ro_keepalive_timeout 与相同pg_keepalive_timeout,但用于只读连接。 <pg_keepalive_timeout>
Cassandra settings
姓名 描述 默认
cassandra_contact_points 以逗号分隔的群集接触点列表。您可以指定IP地址或主机名。请注意,SRV记录的端口组件将被忽略,以代替cassandra_port。连接到多DC群集时,请确保在此列表中首先指定来自本地数据中心的联系点。 127.0.0.1
cassandra_port 节点正在侦听的端口。您的所有节点和联系点必须在同一端口上侦听。如果不存在,将被创建。 9042
cassandra_keyspace 在集群中使用的键空间。 kong
cassandra_write_consistency 写入Cassandra集群时要使用的一致性设置。 ONE
cassandra_read_consistency 从Cassandra集群读取时要使用的一致性设置。 ONE
cassandra_timeout 定义读取和写入的超时(以毫秒为单位)。 5000
cassandra_ssl 切换Kong和Cassandra之间的客户端到节点TLS连接。 off
cassandra_ssl_verify 切换服务器证书验证(如果cassandra_ssl已启用)。请参阅lua_ssl_trusted_certificate设置以指定证书颁发机构。 off
cassandra_username 使用PasswordAuthenticator方案时的用户名。 kong
cassandra_password 使用PasswordAuthenticator方案时的密码。 没有
cassandra_lb_policy 在整个Cassandra群集中分配查询时要使用的负载平衡策略。可接受的值是:RoundRobin,RequestRoundRobin,DCAwareRoundRobin,和RequestDCAwareRoundRobin。以“请求”为前缀的策略会在整个同一请求中有效利用已建立的连接。仅当使用多数据中心群集时,才应使用“ DCAware”策略。 RequestRoundRobin
cassandra_local_datacenter 使用DCAwareRoundRobinor或RequestDCAwareRoundRobin负载平衡策略时,必须为此Kong节点指定本地(最近的)数据中心的名称。 没有
cassandra_refresh_frequency 检查群集拓扑中新节点或退役节点的频率(以秒为单位)。值0将会禁用此检查,并且群集拓扑将永远不会刷新。 60
cassandra_repl_strategy 首次迁移时,Kong将使用此设置来创建密钥空间。可接受的值为SimpleStrategy和NetworkTopologyStrategy。 SimpleStrategy
cassandra_repl_factor 首次迁移时,Kong将在使用时使用此复制因子创建密钥空间SimpleStrategy。 1
cassandra_data_centers 首次迁移时,使用时将使用此设置NetworkTopologyStrategy。格式是由组成的逗号分隔列表<dc_name>:<repl_factor>。 dc1:2,dc2:3
cassandra_schema_consensus_timeout 定义等待时间(以毫秒为单位),以达到Cassandra节点之间的架构共识。此值仅在迁移期间使用。 10000
固定链接声明式配置
当将用于保持所有实体(路线,服务,消费者等)的说明书声明性配置文件的路径database 被设定为off。
实体存储在Kong的内存缓存中,因此您必须确保通过mem_cache_size属性为其分配了足够的内存。您还必须确保缓存中的项目永不过期,这意味着db_cache_ttl 应保留其默认值0。
默认值:无
declarative_config
为了避免与数据存储区进行不必要的通信,Kong在可配置的时间段内缓存实体(例如API,Consumer,Credentials等)。如果这样的实体被更新,它也处理无效。
本部分允许配置Kong与此类配置实体的缓存有关的行为。
固定链接db_update_frequency
使用数据存储库检查更新的实体的频率(以秒为单位)。
当节点通过Admin API创建,更新或删除实体时,其他节点需要等待下一个轮询(由该值配置)才能最终清除旧的缓存实体并开始使用新的实体。
默认: 5
db_update_propagation
数据存储中的实体传播到另一个数据中心的副本节点所花费的时间(以秒为单位)。
在分布式环境(如多数据中心Cassandra集群)中时,此值应为Cassandra将行传播到其他数据中心所花费的最大秒数。
设置此属性后,将增加Kong传播实体更改所花费的时间。
单数据中心设置或PostgreSQL服务器不应遭受此类延迟,并且该值可以安全地设置为0。
默认: 0
db_cache_ttl
此节点缓存的实体在数据存储中的生存时间(以秒为单位)。
如果您未配置,则也会根据此设置缓存数据库未命中(无实体)db_cache_neg_ttl。
如果设置为0(默认值),则此类缓存的实体或未命中永不过期。
默认: 0
db_cache_neg_ttl
数据存储未命中(无实体)的生存时间(以秒为单位)。
如果未指定(默认),db_cache_ttl则将使用value。
如果设置为0,则丢失将永远不会过期。
默认值:无
db_resurrect_ttl
无法刷新数据存储中的陈旧实体的时间(以秒为单位)(例如,数据存储不可访问)。当此TTL过期时,将尝试刷新陈旧的实体。
默认: 30
db_cache_warmup_entities
Kong刚启动时要从数据存储库预加载到内存中的实体。
这加快了使用给定实体的端点的首次访问。
将services实体配置为进行预热后,其host属性中的值的DNS条目也会被异步预解析。
设置的缓存大小mem_cache_size应设置为足以容纳指定实体的所有实例的值。
如果大小不足,Kong将记录警告。
默认: services
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
以逗号分隔的名称服务器列表,每个条目的ip[:port]格式均由Kong使用。如果未指定,resolv.conf将使用本地文件中的名称服务器。
如果省略,则端口默认为53。接受IPv4和IPv6地址。
默认值:无
dns_hostsfile
要使用的主机文件。该文件被读取一次,其内容在内存中是静态的。
要在修改后再次读取文件,必须重新加载Kong。
默认: /etc/hosts
dns_order
解决不同记录类型的顺序。该LAST类型表示最后一次成功查找的类型(对于指定的名称)。格式是一个(不区分大小写)逗号分隔的列表。
默认: LAST,SRV,A,CNAME
dns_valid_ttl
默认情况下,DNS记录使用响应的TTL值进行缓存。如果此属性收到一个值(以秒为单位),它将覆盖所有记录的TTL。
默认值:无
dns_stale_ttl
以秒为单位,定义一条记录在超过其TTL的时间内将保留在缓存中的时间。在后台获取新的DNS记录时将使用此值。
从记录到期起将使用陈旧数据,直到刷新查询完成或经过dns_stale_ttl秒数为止。
默认: 4
dns_not_found_ttl
空DNS响应和“(3)名称错误”响应的TTL(以秒为单位)。
默认: 30
dns_error_ttl
TTL(以秒为单位)用于错误响应。
默认: 1
dns_no_sync
如果启用,则在缓存丢失时,每个请求都将触发其自己的dns查询。
禁用后,具有相同名称/类型的多个请求将同步到单个查询。
默认: off
调整和行为部分
worker_consistency
定义此节点是应同步还是异步重建其状态(平衡器和路由器是根据影响它们的更新(例如,通过Admin API或通过声明性配置文件更新到路由,服务或上游)重建的)。
可接受的值为:
strict:路由器将被同步重建,从而导致传入请求被延迟,直到重建完成。
eventual:路由器将通过在每个工作线程内部每秒运行一次的循环后台作业来异步重建。
请注意,请strict确保给定节点的所有工作进程始终将代理请求转发给同一路由器,但是如果需要频繁的路由和服务更新,则可以观察到增加的长尾延迟。
eventual在这种情况下,使用有助于防止长尾延迟问题,但在路由和服务更新后的短时间内,可能会导致工作人员以不同的方式路由请求。
默认: strict
worker_state_update_frequency
定义通过后台作业检查工作人员状态更改的频率。当检测到更改时,将根据需要构建新的路由器或平衡器。增大此值将减少数据库服务器上的负载,并减少代理延迟的抖动,但是将更改传播到每个单独的工作程序可能需要更多的时间。
默认: 5
杂项
从lua-nginx-module继承的其他设置可提供更大的灵活性和更高级的用法。
有关更多信息,请参见lua-nginx-module文档:https://github.com/openresty/lua-nginx-module
lua_ssl_trusted_certificate
以逗号分隔的PEM格式的Lua cosocket的证书颁发机构文件的路径列表。
system根据任意启发式,特殊值尝试搜索每个发行版提供的“通常的默认值”。在当前实现中,将按顺序测试以下路径名,并将使用找到的第一个路径名:
/etc/ssl/certs/ca-certificates.crt(Debian / Ubuntu / Gentoo)
/etc/pki/tls/certs/ca-bundle.crt(Fedora / RHEL 6)
/etc/ssl/ca-bundle.pem(OpenSUSE)
/etc/pki/tls/cacert.pem(OpenELEC)
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem(CentOS / RHEL 7)
/etc/ssl/cert.pem(OpenBSD,Alpine)
如果在这些路径中的任何一个上均未找到文件,将引发错误。
system 可以单独使用或与其他CA文件路径一起使用。
当pg_ssl_verify或cassandra_ssl_verify启用,这些认证机构的文件将被用于验证香港的数据库连接。
参见https://github.com/openresty/lua-nginx-module#lua_ssl_trusted_certificate
默认值:无
lua_ssl_verify_depth
设置Lua cosockets使用的服务器证书链中的验证深度,由设置lua_ssl_trusted_certificate。
这包括为Kong的数据库连接配置的证书。
如果在到达链的末端之前已达到最大深度,则验证将失败。这有助于减轻基于证书的DoS攻击。
参见https://github.com/openresty/lua-nginx-module#lua_ssl_verify_depth
默认: 1
lua_package_path
设置Lua模块搜索路径(LUA_PATH)。在开发或使用未存储在默认搜索路径中的自定义插件时很有用。
参见https://github.com/openresty/lua-nginx-module#lua_package_path
默认: ./?.lua;./?/init.lua;
lua_package_cpath
设置Lua C模块搜索路径(LUA_CPATH)。
参见https://github.com/openresty/lua-nginx-module#lua_package_cpath
默认值:无
lua_socket_pool_size
指定与每个远程服务器关联的每个cosocket连接池的大小限制。
参见https://github.com/openresty/lua-nginx-module#lua_socket_pool_size
默认: 30
force_rbac
指定是否强制执行Admin API RBAC。
接受之一entity,both,on,或off。
on:仅强制执行端点级授权。
entity:适用实体级别的授权。
both:启用端点和实体级别的授权。
off:禁用端点和实体级授权。
启用后,当传递不存在或无效的RBAC授权令牌或与该令牌关联的RBAC用户没有访问/修改所请求资源的权限时,Kong将拒绝对Admin API的请求。
默认: off
rbac_auth_header
定义HTTP请求标头的名称,Admin API将尝试从该请求标头验证RBAC用户。
默认: Kong-Admin-Token
kong管理设置
Kong Enterprise的管理GUI。
admin_gui_listen
逗号分隔的地址和端口列表,Kong将在这些地址和端口上看到Kong Manager。此网络应用程序可让您配置和管理Kong,因此应确保其安全。
可以为每对指定后缀,类似于admin_listen 指令。
默认: 0.0.0.0:8002, 0.0.0.0:8445 ssl
admin_gui_url
查找或平衡器地址为Kong Manager。
可接受的格式(括号中的项目是可选的):
<scheme>://<IP / HOSTNAME>(:<PORT>(/<PATH>))
例子:
http://127.0.0.1:8003
https://kong-admin.test
http://dev-machine/dev-285
默认情况下,Kong Manager将使用窗口请求主机并根据请求的协议附加解析的侦听器端口。
默认值:无
admin_gui_ssl_cert
admin_gui_listen启用了SSL的值的SSL证书的绝对路径。
默认值:无
admin_gui_ssl_cert_key
admin_gui_listen启用了SSL的值的SSL密钥的绝对路径。
默认值:无
admin_gui_flags
更改布局Admin GUI(JSON)唯一支持的值是{
"IMMUNITY_ENABLED": true }在Admin GUI中启用Kong Immunity。
默认: {
}
admin_gui_access_log
访问日志
在这里,您可以为Kong Manager访问日志设置绝对或相对路径。如果路径是相对的,则将日志放置在该prefix位置。
设置此值将off禁用Kong Manager的访问日志。
默认: logs/admin_gui_access.log
admin_gui_error_log
Kong Manager错误日志
在这里,您可以为Kong Manager访问日志设置绝对或相对路径。如果路径是相对的,则将日志放置在该prefix位置。
设置此值将off禁用Kong Manager的错误日志。
粒度可以通过log_level指令进行调整。
默认: logs/admin_gui_error.log
admin_gui_auth
Kong Manager身份验证插件名称
通过指定要使用的身份验证插件来确保对Kong Manager的访问。
支持的插件:
basic-auth:基本身份验证插件
ldap-auth-advanced:LDAP认证插件
openid-connect:OpenID Connect身份验证插件
默认值:无
admin_gui_auth_conf
Kong Manager身份验证插件配置(JSON)
指定在中指定的身份验证插件的配置 admin_gui_auth。
有关插件配置的信息,请参阅相关的插件文档。
示例basic-auth:
admin_gui_auth_conf = {
"hide_credentials": true }
默认值:无
admin_gui_auth_password_complexity
Kong Manager身份验证密码复杂性(JSON)
当为时admin_gui_auth = basic-auth,此属性定义Kong Manager密码所需的规则。从预设规则中选择或编写自己的规则。
使用预设规则的示例:
admin_gui_auth_password_complexity = {
"kong-preset": "min_8" }
kong-preset的所有值都要求密码包含以下至少三个类别的字符:
大写字母(A到Z)
小写字母(a到z)
以10为基数的数字(0到9)
特殊字符(例如,&,$,#,%)
支持的预设规则:
min_8:最小长度为8
min_12:最小长度为12
min_20:最小长度为20
要编写自己的规则,请参见https://manpages.debian.org/jessie/passwdqc/passwdqc.conf.5.en.html。
注意:仅支持关键字“ min”,“ max”和“ passphrase”。
例子:
admin_gui_auth_password_complexity = {
"min": "disabled,24,11,9,8" }
默认值:无
admin_gui_session_conf
Kong Manager会话配置(JSON)
指定Kong Manager使用的Session插件的配置。
有关插件配置的信息,请参阅Kong Session插件文档。
例子:
admin_gui_session_conf = {
"cookie_name": "kookie", \
"secret": "changeme" }
默认值:无
admin_gui_auth_header
定义HTTP请求标头的名称,Admin API将从中尝试尝试识别Kong Admin用户。
默认: Kong-Admin-User
admin_gui_auth_login_attempts
用户可以尝试登录Kong Manager的次数。0表示允许无限尝试。
默认: 0
重要部分
vitals
启用后,Kong将存储并报告有关其性能的指标。
在多节点设置中运行Kong时,根据节点vitals需要具有两种不同的含义。
在“仅代理”节点上,vitals确定是否收集重要数据。
在仅管理员节点上,vitals确定是否在仪表板上显示重要指标和可视化。
默认: on
vitals_strategy
确定是将Kong数据库(由database上面的config值定义的PostgreSQL还是Cassandra )或单独的存储引擎用于Vitals指标。
接受的值database,prometheus或influxdb。
默认: database
vitals_tsdb_address
定义将Vitals数据写入和读取的TSDB服务器的主机和端口。
当该值仅适用于vitals_strategy选项设置为 prometheus或influxdb。该值接受IPv4,IPv6和主机名值。
如果将vitals_strategy设置为prometheus,则此值确定将从其中读取Vitals数据的Prometheus服务器的地址。对于 influxdb策略,此值控制Vitals数据的读写源。
默认值:无
vitals_tsdb_user
Influxdb用户
默认值:无
vitals_tsdb_password
Influxdb密码
默认值:无
vitals_statsd_address
定义StatsD服务器的主机和端口(以及可选协议),Kong应该将Vitals模写到该主机和端口。仅当将vitals_strategy设置为时,才应用此值 prometheus。此值接受IPv4,IPv6和主机名。另外,tcp可以指定后缀。这样做将导致Kong通过TCP而不是UDP(默认值)发送StatsD指标。
默认值:无
vitals_statsd_prefix
定义附加到所有Vitals StatsD事件的前缀值。将指标写入多租户StatsD导出器或服务器时,此前缀很有用。
默认: kong
vitals_statsd_udp_packet_size
定义将保留和批量发送重要统计数据的最大缓冲区大小。
该值以字节为单位定义。
默认: 1024
vitals_prometheus_scrape_interval
定义读取Vitals数据时发送到Prometheus服务器的scrape_interval查询参数。
这应该与Prometheus服务器的刮擦间隔(以秒为单位)相同。
默认: 5
开发人员入口站点部分
portal
开发人员门户网站切换
启用后:
Kong将在portal_gui_listen地址上公开Dev Portal界面和只读API ,并在Admin API上公开 端点以管理资产。
与一起启用时portal_auth:
Kong将在Admin API和Dev Portal API上公开开发人员帐户的管理端点。
默认: off
portal_gui_listen
开发人员门户GUI侦听器
Kong将在其上显示开发人员门户GUI的地址的逗号分隔列表。可以为每对指定后缀,类似于 admin_listen指令。
默认: 0.0.0.0:8003, 0.0.0.0:8446 ssl
portal_gui_protocol
开发人员门户GUI协议
用于与portal_gui_host您的Kong Proxy节点一起构建查找或平衡器地址的协议。
范例:http,https
默认: http
portal_gui_host
开发人员门户GUI主机
与之配合使用的主机portal_gui_protocol来为您的Kong Proxy节点构造查找或平衡器地址。
例子:
<IP>:<PORT> -> portal_gui_host = 127.0.0.1:8003
<HOSTNAME> -> portal_gui_host = portal_api.domain.tld
<HOSTNAME>/<PATH> -> portal_gui_host = dev-machine/dev-285
默认: 127.0.0.1:8003
portal_cors_origins
开发人员门户CORS的起源
以Access-Control-Allow-Origin 标头分隔的逗号分隔列表。这可用于解决自定义网络环境中的CORS问题。
例子:
域列表: portal_cors_origins = http://localhost:8003, https://localhost:8004
单一网域: portal_cors_origins = http://localhost:8003
所有域: portal_cors_origins = *
注:在大多数情况下,开发者门户网站是利用能够推导出有效CORS的起源portal_gui_protocol,portal_gui_host以及(如适用) portal_gui_use_subdomains。在这些情况下,portal_cors_origins则不需要,并且可以保持不变。
默认值:无
portal_gui_use_subdomains
开发人员门户GUI子域切换
默认情况下,Kong Portal使用请求路径中的第一个名称空间来确定工作空间。通过打开portal_gui_subdomains,Kong Portal将期望工作空间作为子域包含在请求URL中。
示例(关闭):<scheme>://<HOSTNAME>/<WORKSPACE>/<PATH>--> http://kong-portal.com/example-workspace/index
示例(上):<scheme>://<WORKSPACE>.<HOSTNAME>--> http://example-workspace.kong-portal.com/index
默认: off
portal_gui_ssl_cert
开发人员门户GUI SSL证书
portal_gui_listen启用了SSL的值的SSL证书的绝对路径。
默认值:无
portal_gui_ssl_cert_key
开发人员门户GUI SSL证书密钥
portal_gui_listen启用了SSL的值的SSL密钥的绝对路径。
默认值:无
portal_gui_access_log
开发人员门户GUI访问日志位置
您可以在此处为Portal GUI访问日志设置绝对或相对路径。
将此值设置为off将会禁用记录Portal GUI访问日志。
使用相对路径时,日志将放置在该prefix位置下。
默认: logs/portal_gui_access.log
portal_gui_error_log
开发人员门户GUI错误日志位置
在这里,您可以为Portal GUI错误日志设置绝对或相对路径。
将此值设置为off将会禁用记录Portal GUI错误日志。
使用相对路径时,日志将放置在该prefix位置下。
粒度可以通过log_level指令进行调整。
默认: logs/portal_gui_error.log
portal_api_listen
开发人员门户API侦听器
逗号分隔的地址列表,Kong将在这些地址上公开开发人员门户API。可以为每对指定后缀,类似于 admin_listen指令。
默认: 0.0.0.0:8004, 0.0.0.0:8447 ssl
portal_api_url
开发人员门户API URL
Developer Portal节点的查找或平衡器地址。
此值通常用于微服务或面向服务网格的体系结构中。
portal_api_url是Kong可以在其上访问Kong Dev Portal API的地址。仅当Kong Dev Portal API与Kong Proxy位于不同的节点上时,才应设置此值。
可接受的格式(括号中的部分是可选的):
<scheme>://<IP / HOSTNAME>(:<PORT>(/<PATH>))
例子:
<scheme>://<IP>:<PORT> -> portal_api_url = http://127.0.0.1:8003
SSL <scheme>://<HOSTNAME> -> portal_api_url = https://portal_api.domain.tld
<scheme>://<HOSTNAME>/<PATH> -> portal_api_url = http://dev-machine/dev-285
默认情况下,该值指向本地接口:
http://0.0.0.0:8004
默认值:无
portal_api_ssl_cert
开发人员门户网站API SSL证书
portal_api_listen启用了SSL的值的SSL证书的绝对路径。
默认值:无
portal_api_ssl_cert_key
开发人员门户API SSL证书密钥
portal_api_listen启用了SSL的值的SSL密钥的绝对路径。
默认值:无
portal_api_access_log
开发人员门户API访问日志位置
您可以在此处为Portal API访问日志设置绝对或相对路径。
将此值设置为off将会禁用记录Portal API访问日志。
使用相对路径时,日志将放置在该prefix位置下。
默认: logs/portal_api_access.log
portal_api_error_log
开发人员门户API错误日志位置
您可以在此处为Portal API错误日志设置绝对或相对路径。
将此值设置为off将会禁用记录Portal API错误日志。
使用相对路径时,日志将放置在该prefix位置下。
粒度可以通过log_level指令进行调整。
默认: logs/portal_api_error.log
portal_is_legacy
开发人员门户网站旧版支持
将此值设置为on将会导致所有新门户默认情况下使用旧式渲染系统进行渲染。
将此值设置为off将会导致所有新门户使用当前渲染系统进行渲染。
默认: off
portal_app_auth
开发人员门户应用程序注册身份验证提供者和策略。必须设置为启用application_registration插件当前接受kong-oauth2或external-oauth2
默认: kong-oauth2
默认开发人员门户网站认证部分
在创建工作空间时引用,以在该特定工作空间的数据库中设置Dev Portal认证默认值。
portal_auth
开发人员门户网站认证插件名称
指定要应用于您的开发人员门户的身份验证插件。开发人员将使用指定的身份验证形式来请求访问,注册和登录到您的开发人员门户。
支持的插件:
基本身份验证: portal_auth = basic-auth
OIDC验证: portal_auth = openid-connect
默认值:无
portal_auth_password_complexity
门户验证密码复杂性(JSON)
当portal_auth = basic-auth时,此属性定义Kong Portal密码所需的规则。从预设规则中选择或编写自己的规则。
使用预设规则的示例:
portal_auth_password_complexity = {
"kong-preset": "min_8" }
kong-preset的所有值都要求密码包含以下至少三个类别的字符:
大写字母(A到Z)
小写字母(a到z)
以10为基数的数字(0到9)
特殊字符(例如,&,$,#,%)
支持的预设规则:
min_8:最小长度为8
min_12:最小长度为12
min_20:最小长度为20
要编写自己的规则,请参见https://manpages.debian.org/jessie/passwdqc/passwdqc.conf.5.en.html。
注意:仅支持关键字“ min”,“ max”和“ passphrase”。
例子:
portal_auth_password_complexity = {
"min": "disabled,24,11,9,8" }
默认值:无
portal_auth_conf
开发人员门户网站身份验证插件配置(JSON)
以JSON格式指定要用于您的Developer Portal认证的插件配置对象。
有关插件配置的信息,请参阅相关的插件文档。
示例basic-auth:
portal_auth_conf = {
"hide_credentials": true }
默认值:无
portal_auth_login_attempts
用户必须重设密码之前可以尝试登录Dev Portal的次数。
0(默认)表示允许无限尝试。
注意:任何大于0的值只会影响使用basic-auth保护的Dev Portal。
默认: 0
portal_session_conf
门户会话配置(JSON)
指定Kong Portal使用的Session插件的配置。
有关插件配置的信息,请参阅Kong Session插件文档。
例子:
portal_session_conf = {
"cookie_name": "portal_session", \
"secret": "changeme", \
"storage": "kong" }
默认值:无
portal_auto_approve
开发人员门户自动批准访问
当此标志设置为时on,开发人员在完成注册后将自动标记为“已批准”。仍然可以通过Admin GUI或API撤消访问权限。
默认: off
portal_token_exp
门户网站登录重设/帐户验证令牌到期的持续时间(以秒为单位)。
默认: 21600
portal_email_verification
门户开发人员电子邮件验证。
启用后,开发人员将在注册时收到一封电子邮件,以验证其帐户。开发人员在验证其帐户之前将无法使用开发人员门户。
注意:必须启用SMTP才能使用此功能。
默认: off
“默认门户Smtp配置”部分
在创建工作空间时引用,以为该特定工作空间在数据库中设置SMTP默认值。
portal_invite_email
启用或禁用portal_invite_email
默认: on
portal_access_request_email
启用或禁用portal_access_request_email
默认: on
portal_approved_email
启用或禁用portal_approved_email
默认: on
portal_reset_email
启用或禁用portal_reset_email
默认: on
portal_reset_success_email
启用或禁用portal_reset_success_email
默认: on
portal_emails_from
From门户电子邮件标题的名称和电子邮件地址
例子: portal_emails_from = Your Name <example@example.com>
注意:某些SMTP服务器将不使用此值,而是插入与帐户关联的电子邮件和名称。
默认值:无
portal_emails_reply_to
Reply-To门户电子邮件标题的电子邮件地址
例子: portal_emails_reply_to = example@example.com
注意:某些SMTP服务器将不使用该值,而是插入与该帐户关联的电子邮件。
默认值:无
管理员Smtp配置部分
admin_emails_from
From管理员电子邮件标题的电子邮件地址。
默认: ""
admin_emails_reply_to
Reply-To管理员电子邮件标题的电子邮件地址。
默认值:无
admin_invitation_expiry
管理员邀请链接的有效时间(以秒为单位)。0表示没有到期。
例如72小时: 72 * 60 * 60 = 259200
默认: 259200
常规Smtp配置部分
smtp_mock
该标志将模拟电子邮件的发送。可以在完全配置SMTP客户端之前进行测试。
默认: on
smtp_host
要连接的SMTP服务器的主机名。
默认: localhost
smtp_port
SMTP服务器上要连接的端口号。
默认: 25
smtp_starttls
设置on为时,STARTTLS用于加密与SMTP服务器的通信。通常将其与端口587结合使用。
默认: off
smtp_username
用于SMTP服务器身份验证的用户名
默认值:无
smtp_password
用于SMTP服务器身份验证的密码
默认值:无
smtp_ssl
设置on为时,SMTPS用于加密与SMTP服务器的通信。这通常与端口465结合使用。
默认: off
smtp_auth_type
该方法用于验证与SMTP服务器有效选项包括plain, login或nil
默认值:无
smtp_domain
EHLO连接中使用的域和Message-ID标头的一部分
默认: localhost.localdomain
smtp_timeout_connect
连接到SMTP服务器的超时时间(以毫秒为单位)。
默认: 60000
smtp_timeout_send
将数据发送到SMTP服务器的超时时间(以毫秒为单位)。
默认: 60000
smtp_timeout_read
从SMTP服务器读取数据的超时时间(以毫秒为单位)。
默认: 60000
smtp_admin_emails
以逗号分隔的管理员电子邮件列表,以接收通知。
例子 admin1@example.com, admin2@example.com
默认值:无
数据和管理员审核部分
启用后,Kong将存储有关Admin API和数据库访问的详细审核数据。在大多数情况下,数据库更新与Admin API请求关联。这样,数据库对象审核日志数据通过唯一标识符绑定到给定的HTTP,从而提供了Admin API和数据库流量的内置关联。
audit_log
启用后,Kong将记录有关Admin API访问以及数据库行插入,更新和删除的信息。
默认: off
audit_log_ignore_methods
逗号分隔的HTTP方法列表,这些方法不会生成审核日志条目。默认情况下,将记录所有HTTP请求。
默认值:无
audit_log_ignore_paths
用逗号分隔的请求路径列表,这些路径不会生成审核日志条目。默认情况下,将记录所有HTTP请求。
默认值:无
audit_log_ignore_tables
用逗号分隔的数据库表列表,这些列表将不生成审核日志条目。默认情况下,将记录对所有数据库表的更新(术语“更新”是指创建,更新或删除行)。
默认值:无
audit_log_payload_exclude
逗号分隔的密钥列表,将从负载中过滤掉。筛选的密钥将记录在审核日志中。
默认: token, secret, password
audit_log_record_ttl
审核日志记录的TTL长度(以秒为单位)。数据库中早于其TTL的记录将自动清除。
例如30天: 30 * 24 * 60 * 60 = 2592000
默认: 2592000
audit_log_signing_key
定义私有RSA签名密钥的路径,该路径可用于在记录旁边插入审计记录的签名。相应的公钥应脱机存储,并且将来可以用于验证审核条目。如果未定义此值,则不会生成签名。
默认值:无
粒度追踪部分
粒度跟踪提供了一种以人或机器消耗的格式公开有关Kong生命周期的指标和详细调试数据的机制。
tracing
启用后,Kong将生成有关请求生命周期各个部分的精细调试数据,例如DB或DNS查询,插件执行,核心处理程序计时等。
默认: off
tracing_write_strategy
定义Kong将在请求结束时如何写入跟踪数据。默认选项,file将人类易于理解的跟踪数据描述写到节点文件系统上的可配置位置。其他策略将跟踪数据作为JSON文档写入配置的端点。此选项的有效条目file,file_raw,http,tcp,tls,和udp。
默认: file
tracing_write_endpoint
定义将跟踪数据写入的端点。
对于file和file_raw跟踪写策略,此值必须是Kong必须对其具有写访问权的节点文件系统上的有效位置。
对于tcp,tls和udp策略,该值被定义为形式的字符串:<HOST>:<PORT>
对于该http策略,此值的定义形式为: <scheme>://<IP / HOSTNAME>(:<PORT>(/<PATH>))
通过HTTP发送的跟踪通过带有application/json Content-Type的POST方法传递。
默认值:无
tracing_time_threshold
为了将跟踪数据写入已配置的端点,必须执行跟踪的最短时间(以微秒为单位)。通过删除从时序角度来看不感兴趣的跟踪对象,此配置可用于降低跟踪数据中存在的噪声。默认值0消除了此限制,从而导致写入任何持续时间的痕迹。
默认: 0
tracing_types
定义写入的跟踪的类型。
在此列表中未定义的跟踪类型将被忽略,无论其生命周期如何。all写入所有跟踪类型的结果的默认特殊值,与类型无关。
包括跟踪类型有:query,legacy_query,router, balancer.getPeer,balancer.toip,connect.toip,access.before,和 access.after,cassandra_iterate和plugin。
默认: all
tracing_debug_header
定义为了在请求中生成跟踪而必须存在的HTTP请求标头的名称。设置此值提供了一种机制,可以根据客户端的请求有选择地生成请求跟踪。请注意,标头的值无关紧要,只是请求中存在标头。如果未设置此值并启用了跟踪,则Kong将为流经代理和Admin API的所有请求生成跟踪数据。请注意,启用此设置后,不会记录来自证书处理阶段的数据。
默认值:无
generate_trace_details
启用后,Kong会将特定于上下文的详细信息写入跟踪中。跟踪详细信息提供有关跟踪上下文的更多数据。这会大大增加跟踪报告的大小。还请注意,跟踪详细信息可能包含潜在的敏感信息,例如原始SQL查询;启用此选项时,应注意正确存储跟踪。
默认: off
路线碰撞检测/预防部分
固定链接route_validation_strategy
创建或更新路由时用于验证路由的策略。
可以使用不同的策略来调整如何实施工作区拆分流量。
smart 是默认选项,并使用https://docs.konghq.com/enterprise/latest/admin-api/workspaces/examples/#important-note-conflicting-services-or-routes-in-workspaces中描述的算法
off 禁用任何检查
path 强制路由以符合configforce_route_path_pattern中描述的模式
默认: smart
force_route_path_pattern
指定将在pathsRoute对象的属性上强制执行的Lua模式。您还可以在模式中为工作空间添加一个占位符,该占位符将在运行时根据route所属的工作空间呈现 。
仅当route_validation_strategy设置为时,此设置才有意义path。
模式示例/$(workspace)/v%d/.*有效路径为:
/group1/v1/如果route属于工作区group1。
/group2/v1/some_path如果route属于工作区group2。
默认值:无
“数据库加密和密钥环管理”部分
启用后,Kong将透明加密敏感字段,例如消费者凭证,TLS私钥和RBAC用户令牌等。完整的加密字段列表可从Kong Enterprise文档站点获得。
加密的数据在显示给Admin API或可供插件或核心路由逻辑使用之前被透明解密。
请注意,此功能当前为Alpha质量。强烈建议不要在生产群集上启用此功能。与此不提供任何关于前向兼容性或稳定性的保证,并且密钥环数据的错误管理将导致不可恢复的数据丢失。
keyring_enabled
启用后,Kong将在将敏感字段值写入数据库之前先对其进行加密,然后在检索用于Admin API,Developer Portal或代理业务逻辑的数据时对它们进行解密。对称加密密钥基于以下定义的策略进行管理。
默认: off
keyring_strategy
定义策略实现,Kong节点将通过该策略实现来管理对称加密密钥。有关每种策略的详细说明,请参阅Kong Enterprise文档。此选项可接受的值为“ cluster”和“ vault”。
默认: cluster
keyring_public_key
定义RSA密钥对的公钥所在的文件系统路径。此密钥对用于对称密钥环导入/导出,例如,用于灾难恢复和可选的引导。
默认值:无
keyring_private_key
定义RSA密钥对的私钥所在的文件系统路径。此密钥对用于对称密钥环导入/导出,例如,用于灾难恢复和可选的引导。
默认值:无
keyring_blob_path
定义Kong将备份初始密钥环材料的文件系统路径。
此选项主要用于开发目的。
默认值:无
keyring_vault_host
定义Vault主机,Kong将在该主机上获取加密材料。此值应以以下格式定义:
<scheme>://<IP / HOSTNAME>:<PORT>
默认值:无
keyring_vault_mount
定义在其中找到对称密钥的Vault v2 KV秘密引擎的名称。
默认值:无
keyring_vault_path
定义在其中找到对称密钥的Vault v2 KV路径的名称。
默认值:无
keyring_vault_token
定义用于与v2 KV Vault HTTP(S)API通信的令牌值。
默认值:无
untrusted_lua
可接受的值为:
off:禁止从管理员提供的来源(例如通过Admin API)加载Lua函数。
请注意,使用该off选项将使诸如无服务器功能之类的插件无法使用。
sandbox:允许从管理员提供的源加载Lua函数,但是在执行它们时使用沙盒。沙盒功能将只能访问全局环境,而只能访问通常不会对Kong节点造成损害的标准Lua功能。
在这种模式下,require沙箱内部的功能仅允许加载untrusted_lua_sandbox_requires以下明确列出的外部Lua模块 。
LuaJIT字节码加载被禁用。
警告:LuaJIT并非设计为运行恶意代码的安全运行时,因此,即使启用了沙箱,也应适当保护Admin API端点。沙箱仅提供保护,以防止琐碎的攻击者或对Kong全球环境的无意更改。
on:允许从管理员提供的源加载Lua函数,并且在执行它们时不要使用沙箱。函数可以不受限制地访问全局环境,并且可以加载任何Lua模块。这类似于2.3.0之前的Kong中的行为。
LuaJIT字节码加载被禁用。
untrusted_lua_sandbox_requires =允许require在沙盒环境中加载的模块的逗号分隔列表。如果untrusted_lua不是,则忽略 sandbox。
注意:某些模块在允许的情况下可能会导致沙箱逃逸变得微不足道。
untrusted_lua_sandbox_environment =逗号分隔的全局Lua变量列表,应在沙盒环境中使用这些变量。如果untrusted_lua不是,则忽略sandbox。
注意:某些变量(如果可用)可能会导致沙箱逃逸变得微不足道。
默认: sandbox