配置加載
Kong的默認(rèn)配置在 /etc/kong/kong.conf.default
碉钠。如果你通過(guò)一個(gè)官方的安裝包來(lái)安裝Kong唆缴。您可以復(fù)制下面的文件,開(kāi)始配置Kong:
$ cp /etc/kong/kong.conf.default /etc/kong/kong.conf
如果你的配置中的所有值都被考慮聘芜,那么Kong將使用默認(rèn)配置運(yùn)行燕偶。在開(kāi)始時(shí),Kong可能會(huì)查找的幾個(gè)缺省配置文件位置如下:
/etc/kong/kong.conf
/etc/kong.conf
您可以通過(guò)在CLI中使用-c / -conf
參數(shù)自定義配置文件路徑來(lái)覆蓋此默認(rèn)配置:
$ kong start --conf /path/to/kong.conf
配置格式很簡(jiǎn)單:注釋由字符 #
定義旺韭。布爾值可以被指定為 on/off
或者true/false
氛谜。
驗(yàn)證您的配置
您可以使用check
命令來(lái)驗(yàn)證設(shè)置的完整性:
$ kong check <path/to/kong.conf>
configuration at <path/to/kong.conf> is valid
這個(gè)命令,將檢測(cè)您當(dāng)前設(shè)置的環(huán)境變量区端,并且在您的設(shè)置錯(cuò)誤時(shí)報(bào)錯(cuò)值漫。
此外,您還可以在調(diào)試模式下使用CLI织盼,以便更深入地了解正在啟動(dòng)的屬性:
$ kong start -c <kong.conf> --vv
2016/08/11 14:53:36 [verbose] no config file found at /etc/kong.conf
2016/08/11 14:53:36 [verbose] no config file found at /etc/kong/kong.conf
2016/08/11 14:53:36 [debug] admin_listen = "0.0.0.0:8001"
2016/08/11 14:53:36 [debug] database = "postgres"
2016/08/11 14:53:36 [debug] log_level = "notice"
[...]
環(huán)境變量
當(dāng)從配置文件中加載屬性時(shí)杨何,Kong也會(huì)查找相同名稱(chēng)的環(huán)境變量。這允許您通過(guò)環(huán)境變量完全配置Kong沥邻。
所有環(huán)境變量的前綴 KONG_
危虱,大寫(xiě)并帶有與設(shè)置相同的名稱(chēng)將覆蓋默認(rèn)配置。
例如:
log_level = debug # in kong.conf
會(huì)被如下設(shè)置覆蓋:
$ export KONG_LOG_LEVEL=error
定制Nginx配置和嵌入Kong
調(diào)整Nginx配置是設(shè)置您的Kong實(shí)例的一個(gè)重要部分唐全,因?yàn)樗试S您優(yōu)化其性能埃跷,或者將Kong嵌入到已經(jīng)運(yùn)行的OpenResty實(shí)例中。
- 自定義Nginx配置
Kong可以用 --nginx-conf
的參數(shù)啟動(dòng)邮利,重新加載和重新啟動(dòng)捌蚊,該參數(shù)必須指定Nginx配置模板。這樣的模板使用了Penlight模板引擎近弟,它是使用給定的Kong配置編譯的,然后在開(kāi)始Nginx之前被保存到您的Kong前綴目錄中挺智。
默認(rèn)模板可以在https://github.com/Kong/kong/tree/master/kong/templates
找到祷愉。它分為兩個(gè)Nginx配置文件:nginx.lua
和 nginx_kong.lua
。前者是運(yùn)行Kong的最低的配置要求赦颇,其會(huì)包括后者二鳄。當(dāng)Kong開(kāi)始運(yùn)行時(shí),在開(kāi)始Nginx之前媒怯,它將這兩個(gè)文件復(fù)制到前綴目錄中订讼,看起來(lái)是這樣的:
/usr/local/kong
├── nginx-kong.conf
├── nginx.conf
如果您希望在Nginx配置中包含其他服務(wù)模塊,或者您必須調(diào)整不受Kong配置影響的全局設(shè)置扇苞,這里有一個(gè)建議:
# ---------------------
# custom_nginx.template
# ---------------------
worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf
daemon ${{NGINX_DAEMON}}; # can be set by kong.conf
pid pids/nginx.pid; # this setting is 強(qiáng)制的
error_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.conf
events {
use epoll; # custom setting
multi_accept on;
}
http {
# include default Kong Nginx config
include 'nginx-kong.conf';
# custom server
server {
listen 8888;
server_name custom_server;
location / {
... # etc
}
}
}
你可以這樣啟動(dòng)Kong:
$ kong start -c kong.conf --nginx-conf custom_nginx.template
如果您希望自定義Kong的Nginx子配置文件欺殿,最終添加其他Lua處理程序或定制lua_*
指令寄纵,您可以在custom_nginx.template
內(nèi)聯(lián)nginx_kong.lua
這個(gè)配置。模板示例文件如下:
# ---------------------
# custom_nginx.template
# ---------------------
worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf
daemon ${{NGINX_DAEMON}}; # can be set by kong.conf
pid pids/nginx.pid; # this setting is mandatory
error_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.conf
events {}
http {
resolver ${{DNS_RESOLVER}} ipv6=off;
charset UTF-8;
error_log logs/error.log ${{LOG_LEVEL}};
access_log logs/access.log;
... # etc
}
- 在OpenResty里嵌入Kong
如果您正在運(yùn)行您自己的OpenResty服務(wù)器脖苏,您也可以通過(guò)使用include
指令(類(lèi)似于上一節(jié)的示例)來(lái)輕松地嵌入Kong程拭。如果您有一個(gè)有效的頂級(jí)NGINX配置,那么就可以簡(jiǎn)單的引入Kong的配置:
# my_nginx.conf
http {
include 'nginx-kong.conf';
}
你可以像這樣開(kāi)始你的實(shí)例:
$ nginx -p /usr/local/openresty -c my_nginx.conf
這樣Kong就會(huì)運(yùn)行在你的實(shí)例中棍潘。(Kong的配置在nginx-kong.conf
里)
- Kong為網(wǎng)站和你的api提供服務(wù)
API提供者的一個(gè)常見(jiàn)用例是讓Kong在代理端口上同時(shí)服務(wù)于一個(gè)網(wǎng)站和API本身——在生產(chǎn)中有80
或443
恃鞋。例如:https://my-api.com
(網(wǎng)站)和https://my-api.com/api/v1
(API)。
為了實(shí)現(xiàn)這一點(diǎn)亦歉,我們不能簡(jiǎn)單地聲明一個(gè)新的虛擬服務(wù)模塊恤浪,就像我們?cè)谏弦还?jié)中所做的那樣。一個(gè)好的解決方案是使用一個(gè)定制的Nginx配置模板肴楷,該模板可以?xún)?nèi)聯(lián)nginx_kong.lua
水由。添加一個(gè)新的location
塊,與Kong代理location
塊一起服務(wù)于網(wǎng)站:
# ---------------------
# custom_nginx.template
# ---------------------
worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf
daemon ${{NGINX_DAEMON}}; # can be set by kong.conf
pid pids/nginx.pid; # this setting is mandatory
error_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.conf
events {}
http {
# here, we inline the contents of nginx_kong.lua
charset UTF-8;
# any contents until Kong's Proxy server block
...
# Kong's Proxy server block
server {
server_name kong;
# any contents until the location / block
...
# here, we declare our custom location serving our website
# (or API portal) which we can optimize for serving static assets
location / {
root /var/www/my-api.com;
index index.htm index.html;
...
}
# Kong's Proxy location / has been changed to /api/v1
location /api/v1 {
set $upstream_host nil;
set $upstream_scheme nil;
set $upstream_uri nil;
# Any remaining configuration for the Proxy location
...
}
}
# Kong's Admin server block goes below
}
配置屬性詳解
可以新建配置文件/etc/kong/kong.conf
進(jìn)行添加修改阶祭。
常規(guī)屬性
prefix
工作目錄绷杜。相當(dāng)于Nginx的前綴路徑,包含臨時(shí)文件和日志濒募。每個(gè)流程必須有一個(gè)單獨(dú)的工作目錄鞭盟。
默認(rèn):/usr/local/kong
log_level
Nginx服務(wù)器的日志級(jí)別」逄辏可以在<prefix>/logs/error.log
請(qǐng)參閱 http://nginx.org/en/docs/ngx_core_module.html#error_log齿诉,以獲得公認(rèn)的值列表。
默認(rèn):notice
proxy_access_log
代理端口請(qǐng)求訪(fǎng)問(wèn)日志的路徑晌姚。設(shè)置為off
以禁用日志代理請(qǐng)求粤剧。如果這個(gè)值是相對(duì)路徑,那么它將被放置于前綴路徑之下挥唠。
默認(rèn):logs/access.log
proxy_error_log
代理端口請(qǐng)求錯(cuò)誤日志的路徑抵恋。這些日志的粒度由log_level
指令進(jìn)行調(diào)整。
默認(rèn):logs/error.log
admin_access_log
Admin API的路徑請(qǐng)求訪(fǎng)問(wèn)日志宝磨。設(shè)置為off
以禁用Admin API請(qǐng)求日志弧关。如果這個(gè)值是相對(duì)路徑,那么它將被放置于前綴路徑之下唤锉。
默認(rèn):logs/admin_access.log
admin_error_log
Admin API請(qǐng)求錯(cuò)誤日志的路徑世囊。這些日志的粒度由log_level指令進(jìn)行調(diào)整。
默認(rèn):logs/error.log
custom_plugins
這個(gè)節(jié)點(diǎn)應(yīng)該加載的附加插件的逗號(hào)分隔列表窿祥。使用這個(gè)屬性來(lái)加載與Kong不捆綁的定制插件株憾。插件將從kong.plugins.{name}.*
命名空間加載。
默認(rèn):none
示例:my-plugin,hello-world,custom-rate-limiting
anonymous_reports
發(fā)送匿名的使用數(shù)據(jù)晒衩,比如錯(cuò)誤堆棧跟蹤嗤瞎,以幫助改進(jìn)Kong墙歪。
默認(rèn):on
Nginx屬性
proxy_listen
代理服務(wù)偵聽(tīng)的地址和端口的逗號(hào)分隔的列表。代理服務(wù)是Kong的公共入口點(diǎn)猫胁,它代理從您的使用者到您的后端服務(wù)的流量箱亿。這個(gè)值接受IPv4、IPv6和主機(jī)名弃秆。
可以為每一對(duì)指定一些后綴:
-
ssl
將要求通過(guò)啟用TLS的特定地址/端口進(jìn)行所有連接届惋。 -
http2
允許客戶(hù)端打開(kāi)http/2連接到Kong的代理服務(wù) - 最后,
proxy_protocol
將為給定的地址/端口啟用代理協(xié)議。
這個(gè)節(jié)點(diǎn)的代理端口菠赚,啟用了“控制面板”模式(沒(méi)有流量代理功能)脑豹,可以配置連接到同一數(shù)據(jù)庫(kù)的節(jié)點(diǎn)集群。
查看 http://nginx.org/en/docs/http/ngx_http_core_module.html#listen 用于描述這個(gè)和其他*_listen
值的接受格式衡查。
默認(rèn):0.0.0.0:8000, 0.0.0.0:8443 ssl
示例:0.0.0.0:80, 0.0.0.0:81 http2, 0.0.0.0:443 ssl, 0.0.0.0:444 http2 ssl
admin_listen
管理接口監(jiān)聽(tīng)的地址和端口的逗號(hào)分隔的列表瘩欺。Admin接口是允許您配置和管理Kong的API。對(duì)該接口的訪(fǎng)問(wèn)應(yīng)該僅限于Kong管理員拌牲。這個(gè)值接受IPv4俱饿、IPv6和主機(jī)名∷觯可以為每一對(duì)指定一些后綴:
-
ssl
將要求通過(guò)啟用TLS的特定地址/端口進(jìn)行所有連接拍埠。 -
http2
允許客戶(hù)端打開(kāi)http/2連接到Kong的代理服務(wù) - 最后,
proxy_protocol
將為給定的地址/端口啟用代理協(xié)議。
這個(gè)值可以被設(shè)置為off
土居,從而禁用這個(gè)節(jié)點(diǎn)的Admin接口枣购,從而使“數(shù)據(jù)面板”模式(沒(méi)有配置功能)從數(shù)據(jù)庫(kù)中拉出它的配置更改。
默認(rèn):127.0.0.1:8001, 127.0.0.1:8444 ssl
示例:127.0.0.1:8444 http2 ssl
nginx_user
定義工作進(jìn)程使用的用戶(hù)和組憑據(jù)擦耀。如果省略組棉圈,則使用名稱(chēng)與用戶(hù)名相同的組。
默認(rèn):nobody nobody
示例:nginx www
nginx_worker_processes
確定Nginx生成的工作進(jìn)程的數(shù)量眷蜓。請(qǐng)參閱http://nginx.org/en/docs/ngx_core_module.html#worker 流程分瘾,以便詳細(xì)使用該指令和對(duì)已接受值的描述。
默認(rèn)值:auto
nginx_daemon
確定Nginx是否會(huì)作為守護(hù)進(jìn)程或前臺(tái)進(jìn)程運(yùn)行吁系。主要用于開(kāi)發(fā)或在Docker環(huán)境中運(yùn)行Kong芹敌。
查閱 http://nginx.org/en/docs/ngx_core_module.html#daemon.
默認(rèn):on
mem_cache_size
數(shù)據(jù)庫(kù)實(shí)體內(nèi)存緩存的大小。被接受的單位是k和m垮抗,最低推薦值為幾個(gè)MBs。
默認(rèn):128m
ssl_cipher_suite
定義Nginx提供的TLS密碼碧聪∶鞍妫可接受的值modern
, intermediate
, old
, or custom
。請(qǐng)參閱 https://wiki.mozilla.org/Security/Server_Side_TLS
逞姿,了解每個(gè)密碼套件的詳細(xì)描述辞嗡。
默認(rèn)值:modern
ssl_ciphers
定義一個(gè)由Nginx提供的LTS ciphers的自定義列表捆等。這個(gè)列表必須符合openssl ciphers
定義的模式。如果ssl_cipher_suite
不是custom
续室,那么這個(gè)值就會(huì)被忽略栋烤。
默認(rèn)值:none
ssl_cert
啟用SSL時(shí),proxy_listen
的SSL證書(shū)的絕對(duì)路徑挺狰。
默認(rèn)值:none
ssl_cert_key
啟用SSL時(shí)明郭,proxy_listen
的SSL key的絕對(duì)路徑。
默認(rèn)值:none
client_ssl
當(dāng)代理請(qǐng)求時(shí)丰泊,確定Nginx是否應(yīng)該發(fā)送客戶(hù)端SSL證書(shū)薯定。
默認(rèn)值:off
client_ssl_cert
如果啟用了client_ssl,用于proxy_ssl_certificate
配置的客戶(hù)端SSL證書(shū)的絕對(duì)路徑瞳购。注意话侄,這個(gè)值是靜態(tài)地在節(jié)點(diǎn)上定義的,并且當(dāng)前不能在每個(gè)api的基礎(chǔ)上配置学赛。
默認(rèn)值:none
client_ssl_cert_key
如果啟用了client_ssl年堆,用于proxy_ssl_certificate_key
配置的客戶(hù)端SSL證書(shū)的絕對(duì)路徑。注意盏浇,這個(gè)值是靜態(tài)地在節(jié)點(diǎn)上定義的变丧,并且當(dāng)前不能在每個(gè)api的基礎(chǔ)上配置。
默認(rèn)值:none
admin_ssl_cert
啟用了SSL后缠捌, admin_listen
的SSL證書(shū)的絕對(duì)路徑锄贷。
默認(rèn)值:none
admin_ssl_cert_key
啟用了SSL后, admin_listen
的SSL key的絕對(duì)路徑曼月。
默認(rèn)值:none
upstream_keepalive
在每個(gè)工作進(jìn)程谊却,設(shè)置緩存中保存的upstream服務(wù)的空閑keepalive連接的最大數(shù)量。當(dāng)超過(guò)這個(gè)數(shù)字時(shí)哑芹,會(huì)關(guān)閉最近最少使用的連接炎辨。
默認(rèn)值:60
server_tokens
在錯(cuò)誤頁(yè)面,和Server
或Via
(如果請(qǐng)求被代理)的響應(yīng)頭字段聪姿,啟用或禁用展示Kong的版本碴萧。
默認(rèn)值:on
latency_tokens
在X-Kong-Proxy-Latency
和X-Kong-Upstream-Latency
響應(yīng)頭字段中,啟用或禁用展示Kong的潛在信息末购。
默認(rèn)值:on
trusted_ips
定義可信的IP地址塊破喻,使其知道如何發(fā)送正確的 X-Forwarded-*
頭部信息。來(lái)自受信任的ip的請(qǐng)求使Kong轉(zhuǎn)發(fā)他們的 X-Forwarded-*
headers upstream盟榴。不受信任的請(qǐng)求使Kong插入自己的 X-Forwarded-*
headers曹质。
該屬性還在Nginx配置中設(shè)置 set_real_ip_from
指令(s)。它接受相同類(lèi)型的值(CIDR塊),但它是一個(gè)逗號(hào)分隔的列表羽德。
如果相信 all /!\ IPs几莽,請(qǐng)把這個(gè)值設(shè)為0.0.0.0/0,::/0
。
如果特殊值unix:
被指定了宅静,所有的unix域套接字都將被信任章蚣。
查閱 the Nginx docs 了解 更詳細(xì)的set_real_ip_from
配置資料。
Default: none
real_ip_header
定義請(qǐng)求頭字段姨夹,它的值將被用來(lái)替換客戶(hù)端地址纤垂。在Nginx配置中使用相同名稱(chēng)的指令 ngx_http_realip_module 設(shè)置該值。
如果這個(gè)值接收到 proxy_protocol
匀伏,那么 proxy_protocol
參數(shù)將被附加到Nginx模板的 listen
指令中洒忧。
查閱 the Nginx docs 尋找更詳細(xì)的描述。
默認(rèn)值: X-Real-IP
real_ip_recursive
該值設(shè)置了Nginx配置中同名的 ngx_http_realip_module 指令够颠。
查閱 the Nginx docs 尋找更詳細(xì)的描述熙侍。
默認(rèn)值: off
client_max_body_size
指定在 Content-Length 的請(qǐng)求頭中,定義Kong代理的請(qǐng)求的最大被允許的請(qǐng)求體大小履磨。如果請(qǐng)求超過(guò)這個(gè)限度蛉抓,Kong將返回413(請(qǐng)求實(shí)體太大)。將該值設(shè)置為0將禁用檢查請(qǐng)求體的大小剃诅。
提示: 查閱關(guān)于 the Nginx docs 這個(gè)參數(shù)的進(jìn)一步描述巷送。數(shù)值可以用k
或m
后綴,表示限制是千字節(jié)矛辕,還是兆字節(jié)笑跛。
默認(rèn)值:0
client_body_buffer_size
定義讀取請(qǐng)求主體的緩沖區(qū)大小。如果客戶(hù)端請(qǐng)求體大于這個(gè)值聊品,則閥體將被緩沖到磁盤(pán)飞蹂。請(qǐng)注意,當(dāng)閥體被緩沖到磁盤(pán)的時(shí)候翻屈,訪(fǎng)問(wèn)或操縱請(qǐng)求主體可能無(wú)法工作陈哑,因此最好將這個(gè)值設(shè)置為盡可能高的值。(例如伸眶,將其設(shè)置為client_max_body_size
惊窖,以迫使請(qǐng)求體保持在內(nèi)存中)。請(qǐng)注意厘贼,高并發(fā)性環(huán)境需要大量的內(nèi)存分配來(lái)處理許多并發(fā)的大型請(qǐng)求體界酒。
提示: 查閱關(guān)于 the Nginx docs 這個(gè)參數(shù)的進(jìn)一步描述。數(shù)值可以用k
或m
后綴嘴秸,表示限制是千字節(jié)盾计,還是兆字節(jié)售担。
默認(rèn)值:8k
error_default_type
當(dāng)請(qǐng)求Accept標(biāo)頭丟失時(shí),使用默認(rèn)的MIME類(lèi)型署辉,且Nginx為這個(gè)請(qǐng)求返回一個(gè)錯(cuò)誤⊙宜模可接受的值包括 text/plain
, text/html
, application/json
, 和application/xml
.
默認(rèn)值:text/plain
數(shù)據(jù)存儲(chǔ)屬性
Kong將存儲(chǔ)所有的數(shù)據(jù)(如api哭尝、消費(fèi)者和插件)到Cassandra或PostgreSQL。
屬于同一集群的所有Kong節(jié)點(diǎn)都必須連接到同一個(gè)數(shù)據(jù)庫(kù)剖煌。
從Kong0.12.0開(kāi)始:
PostgreSQL 9.4支持應(yīng)該被認(rèn)為是棄用材鹦。鼓勵(lì)用戶(hù)升級(jí)到9.5+
應(yīng)該考慮支持Cassandra 2.1的支持。鼓勵(lì)用戶(hù)升級(jí)到2.2+
database
確定這個(gè)節(jié)點(diǎn)將使用哪個(gè)PostgreSQL或Cassandra作為它的數(shù)據(jù)存儲(chǔ)耕姊⊥疤疲可以設(shè)置為:postgres
和 cassandra
。
默認(rèn)值:postgres
Postgres settings
名稱(chēng) | 描述 |
---|---|
pg_host | Postgres服務(wù)器的主機(jī) |
pg_port | Postgres服務(wù)器的端口 |
pg_user | Postgres用戶(hù) |
pg_password | Postgres用戶(hù)的密碼 |
pg_database | 數(shù)據(jù)庫(kù)連接茉兰。必須存在 |
pg_ssl | 啟用SSL連接到服務(wù)器 |
pg_ssl_verify | 如果啟用了pg_ssl 尤泽,則切換服務(wù)器證書(shū)驗(yàn)證」媪常看到lua_ssl_trusted_certificate 設(shè)置坯约。 |
Cassandra settings
名稱(chēng) | 描述 |
---|---|
cassandra_contact_points | 指向您的Cassandra集群的鏈接點(diǎn)列表,使用逗號(hào)分割莫鸭。 |
cassandra_port | 你的節(jié)點(diǎn)監(jiān)聽(tīng)的端口 |
cassandra_keyspace | 在集群中使用的關(guān)鍵空間闹丐。如果不存在,就會(huì)被創(chuàng)建被因。 |
cassandra_consistency | 在閱讀/寫(xiě)作時(shí)使用一致性設(shè)置卿拴。 |
cassandra_timeout | 讀取/寫(xiě)入 超時(shí)(ms)時(shí)間。 |
cassandra_ssl | 啟用SSL連接到節(jié)點(diǎn)梨与。 |
cassandra_ssl_verify | 如果啟用了cassandra_ssl 堕花,則切換服務(wù)器證書(shū)驗(yàn)證。查看 lua_ssl_trusted_certificate 設(shè)置蛋欣。 |
cassandra_username | 使用PasswordAuthenticator時(shí)的用戶(hù)名航徙。 |
cassandra_password | 在使用PasswordAuthenticator時(shí)的密碼。 |
cassandra_consistency | 在讀取/寫(xiě)入Cassandra集群時(shí)使用一致性設(shè)置陷虎。 |
cassandra_lb_policy | 當(dāng)在您的Cassandra集群中分布查詢(xún)時(shí)使用負(fù)載平衡策略到踏。可設(shè)置為 RoundRobin 和 DCAwareRoundRobin 尚猿。如果您使用的是多數(shù)據(jù)中心集群窝稿,則后者更好。如果是這樣凿掂,還要設(shè)置 cassandra_local_datacenter 伴榔。 |
cassandra_local_datacenter | 在使用DCAwareRoundRobin 政策時(shí)纹蝴,必須指定本地(最近)的集群名稱(chēng)到這個(gè)Kong節(jié)點(diǎn)。 |
cassandra_repl_strategy | 如果第一次創(chuàng)建密鑰空間踪少,請(qǐng)指定復(fù)制策略塘安。 |
cassandra_repl_factor | 為SimpleStrategy 指定一個(gè)復(fù)制因子。 |
cassandra_data_centers | 為NetworkTopologyStrategy (網(wǎng)絡(luò)拓?fù)洳呗?指定數(shù)據(jù)中心援奢。 |
cassandra_schema_consensus_timeout | Cassandra節(jié)點(diǎn)之間同步scheme的超時(shí)( ms)時(shí)間兼犯。這個(gè)值只在數(shù)據(jù)遷移期間使用。 |
數(shù)據(jù)緩存屬性
為了避免與數(shù)據(jù)存儲(chǔ)不必要的通信集漾,Kong可配置緩存實(shí)體(比如api切黔、消費(fèi)者、憑證等等)的間隔時(shí)間具篇。如果緩存實(shí)體被更新纬霞,它也會(huì)處理也會(huì)失效。
本節(jié)介紹關(guān)于配置Kong此類(lèi)配置實(shí)體緩存驱显。
db_update_frequency
頻率(以秒為單位)诗芜,用于檢查帶有數(shù)據(jù)存儲(chǔ)的更新實(shí)體。當(dāng)節(jié)點(diǎn)通過(guò)Admin API創(chuàng)建秒紧、更新或刪除實(shí)體時(shí)绢陌,其他節(jié)點(diǎn)需要等待下一次輪詢(xún)(由這個(gè)值配置),以清除舊的緩存實(shí)體并開(kāi)始使用新的緩存熔恢。
默認(rèn)值:5 seconds
db_update_propagation
在數(shù)據(jù)存儲(chǔ)中為實(shí)體所花費(fèi)的時(shí)間(以秒為單位)被傳播到另一個(gè)數(shù)據(jù)中心的副本節(jié)點(diǎn)脐湾。當(dāng)在分布式環(huán)境中,比如多數(shù)據(jù)中心Cassandra集群時(shí)叙淌,這個(gè)值應(yīng)該是Cassandra將一行傳播到其他數(shù)據(jù)中心的最大秒數(shù)秤掌。當(dāng)設(shè)置了該值,該屬性將增加Kong傳播實(shí)體變更所花費(fèi)的時(shí)間鹰霍。單數(shù)據(jù)中心設(shè)置或PostgreSQL服務(wù)器不應(yīng)該受到這樣的延遲闻鉴,并且這個(gè)值可以安全地設(shè)置為0。
默認(rèn)值: 0 seconds
db_cache_ttl
該節(jié)點(diǎn)數(shù)據(jù)存儲(chǔ)實(shí)體緩存的生存時(shí)間(以秒為單位)茂洒。數(shù)據(jù)庫(kù)遺漏(沒(méi)有實(shí)體)也會(huì)根據(jù)這個(gè)設(shè)置進(jìn)行緩存孟岛。如果設(shè)置為0,那么這種緩存的實(shí)體/遺漏永遠(yuǎn)不會(huì)過(guò)期督勺。
默認(rèn)值:3600 seconds(1小時(shí))
DNS解析屬性
Kong將把主機(jī)名解析為 SRV
或 A
記錄(按照該順序渠羞,CNAME
記錄將在此過(guò)程中被取消)。如果一個(gè)名稱(chēng)被解析為SRV
記錄智哀,它會(huì)通過(guò)從DNS服務(wù)器接收到端口以覆蓋給定的端口號(hào)次询。
DNS選項(xiàng)SEARCH
和NDOTS
(來(lái)自/etc/resolv.conf 文件)將被用于將短名稱(chēng)擴(kuò)展到完全限定的名稱(chēng)。因此瓷叫,它將首先嘗試完整 SEARCH
SRV
類(lèi)型的列表屯吊,如果失敗送巡,它將會(huì)嘗試SEARCH
A
記錄列表,等等盒卸。
在ttl
的持續(xù)時(shí)間內(nèi)骗爆,內(nèi)部DNS解析器將對(duì)DNS記錄的條目上做負(fù)載均衡請(qǐng)求。對(duì)于SRV
記錄蔽介,可以設(shè)置權(quán)重淮腾,但是它只會(huì)使用記錄中最低優(yōu)先級(jí)字段條目。
dns_resolver
設(shè)置域名服務(wù)器列表屉佳,使用逗號(hào)分隔。格式如: ip[:port]
洲押。如果沒(méi)有制定域名服務(wù)器武花,name就使用本地 resolv.conf
文件。端口默認(rèn)為53杈帐√寤可以使用IPv4和IPv6地址。
默認(rèn)值: none
dns_hostsfile
要使用的主機(jī)文件挑童。這個(gè)文件只被讀取一次累铅,然后會(huì)存儲(chǔ)在內(nèi)存中。要在修改后想再次讀取該文件站叼,必須重新加載Kong娃兽。
默認(rèn)值:/etc/hosts
dns_order
解決不同記錄類(lèi)型的順序。LAST
類(lèi)型指的是最后一次成功的查找的類(lèi)型(對(duì)于指定的名稱(chēng))尽楔。格式是一個(gè)(大小寫(xiě)不敏感)逗號(hào)分隔的列表投储。
默認(rèn)值: LAST
,SRV
,A
,CNAME
dns_stale_ttl
定義在緩存中保存DNS記錄的TTL
時(shí)間。當(dāng)新的DNS記錄在后臺(tái)獲取時(shí)阔馋,這個(gè)值將被使用玛荞。陳舊的數(shù)據(jù)將從記錄的過(guò)期時(shí)間使用,直到刷新查詢(xún)完成呕寝,或者dns_stale_ttl
的秒數(shù)已經(jīng)過(guò)去勋眯。
默認(rèn)值:4
dns_not_found_ttl
空DNS響應(yīng)和 "(3) name error" 響應(yīng)的TTL時(shí)間(以秒為單位)
默認(rèn)值:30
dns_error_ttl
錯(cuò)誤響應(yīng)的TTL時(shí)間(以秒為單位)
默認(rèn)值:1
dns_no_sync
如果啟用了,那么在cache-miss時(shí)下梢,每個(gè)請(qǐng)求都會(huì)觸發(fā)自己的dns查詢(xún)客蹋。當(dāng)為相同的名稱(chēng)/類(lèi)型禁用多個(gè)請(qǐng)求時(shí),將同步到單個(gè)查詢(xún)怔球。
默認(rèn)值: off
開(kāi)發(fā)與其他屬性
從lua-nginx-module繼承的附加設(shè)置嚼酝,可以更靈活和更高級(jí)的使用。
有關(guān)更多信息竟坛,請(qǐng)參見(jiàn)lua-nginx-module文檔:https://github.com/openresty/lua-nginx-module
lua_ssl_trusted_certificate
在PEM格式的Lua cosockets的證書(shū)權(quán)威文件的絕對(duì)路徑闽巩。該證書(shū)將用于驗(yàn)證Kong的數(shù)據(jù)庫(kù)連接钧舌,當(dāng)啟用pg_ssl_verify
或cassandra_ssl_verify
時(shí)。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_ssl_trusted_certificate
默認(rèn)值: none
lua_ssl_verify_depth
在Lua cosockets使用的服務(wù)器證書(shū)鏈中設(shè)置驗(yàn)證深度涎跨,通過(guò)lua_ssl_trusted_certificate
設(shè)置洼冻。
這包括為Kong的數(shù)據(jù)庫(kù)連接配置的證書(shū)。
詳情查閱: https://github.com/openresty/lua-nginx-module#lua_ssl_verify_depth
默認(rèn)值: 1
lua_package_path
設(shè)置Lua模塊搜索路徑(LUA_PATH)隅很。在默認(rèn)搜索路徑中撞牢,開(kāi)發(fā)或使用不存儲(chǔ)的自定義插件時(shí)非常有用。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_package_path
默認(rèn)值: none
lua_package_cpath
設(shè)置Lua C模塊搜索路徑(LUA_CPATH)叔营。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_package_cpath
默認(rèn)值: none
lua_socket_pool_size
指定與每個(gè)遠(yuǎn)程服務(wù)器相關(guān)聯(lián)的每個(gè)cosocket連接池的大小限制屋彪。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_socket_pool_size
默認(rèn)值:30