發表日期:2018-08 文章編輯:小燈 瀏覽次數:2555
Kong的默認配置在 /etc/kong/kong.conf.default
。如果你通過一個官方的安裝包來安裝Kong。您可以復制下面的文件,開始配置Kong:
$ cp /etc/kong/kong.conf.default /etc/kong/kong.conf
如果你的配置中的所有值都被考慮,那么Kong將使用默認配置運行。在開始時,Kong可能會查找的幾個缺省配置文件位置如下:
/etc/kong/kong.conf /etc/kong.conf
您可以通過在CLI中使用-c / -conf
參數自定義配置文件路徑來覆蓋此默認配置:
$ kong start --conf /path/to/kong.conf
配置格式很簡單:注釋由字符 #
定義。布爾值可以被指定為 on/off
或者true/false
。
您可以使用check
命令來驗證設置的完整性:
$ kong check <path/to/kong.conf> configuration at <path/to/kong.conf> is valid
這個命令,將檢測您當前設置的環境變量,并且在您的設置錯誤時報錯。
此外,您還可以在調試模式下使用CLI,以便更深入地了解正在啟動的屬性:
$ 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" [...]
當從配置文件中加載屬性時,Kong也會查找相同名稱的環境變量。這允許您通過環境變量完全配置Kong。
所有環境變量的前綴 KONG_
,大寫并帶有與設置相同的名稱將覆蓋默認配置。
例如:
log_level = debug # in kong.conf
會被如下設置覆蓋:
$ export KONG_LOG_LEVEL=error
調整Nginx配置是設置您的Kong實例的一個重要部分,因為它允許您優化其性能,或者將Kong嵌入到已經運行的OpenResty實例中。
Kong可以用 --nginx-conf
的參數啟動,重新加載和重新啟動,該參數必須指定Nginx配置模板。這樣的模板使用了Penlight模板引擎,它是使用給定的Kong配置編譯的,然后在開始Nginx之前被保存到您的Kong前綴目錄中。
默認模板可以在https://github.com/Kong/kong/tree/master/kong/templates
找到。它分為兩個Nginx配置文件:nginx.lua
和 nginx_kong.lua
。前者是運行Kong的最低的配置要求,其會包括后者。當Kong開始運行時,在開始Nginx之前,它將這兩個文件復制到前綴目錄中,看起來是這樣的:
/usr/local/kong ├── nginx-kong.conf ├── nginx.conf
如果您希望在Nginx配置中包含其他服務模塊,或者您必須調整不受Kong配置影響的全局設置,這里有一個建議:
# --------------------- # custom_nginx.template # ---------------------worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf daemon ${{NGINX_DAEMON}}; # can be set by kong.confpid pids/nginx.pid;# this setting is 強制的 error_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.confevents { 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 } } }
你可以這樣啟動Kong:
$ kong start -c kong.conf --nginx-conf custom_nginx.template
如果您希望自定義Kong的Nginx子配置文件,最終添加其他Lua處理程序或定制lua_*
指令,您可以在custom_nginx.template
內聯nginx_kong.lua
這個配置。模板示例文件如下:
# --------------------- # custom_nginx.template # ---------------------worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf daemon ${{NGINX_DAEMON}}; # can be set by kong.confpid pids/nginx.pid;# this setting is mandatory error_log logs/error.log ${{LOG_LEVEL}}; # can be set by kong.confevents {}http { resolver ${{DNS_RESOLVER}} ipv6=off; charset UTF-8; error_log logs/error.log ${{LOG_LEVEL}}; access_log logs/access.log;... # etc }
如果您正在運行您自己的OpenResty服務器,您也可以通過使用include
指令(類似于上一節的示例)來輕松地嵌入Kong。如果您有一個有效的頂級NGINX配置,那么就可以簡單的引入Kong的配置:
# my_nginx.confhttp { include 'nginx-kong.conf'; }
你可以像這樣開始你的實例:
$ nginx -p /usr/local/openresty -c my_nginx.conf
這樣Kong就會運行在你的實例中。(Kong的配置在nginx-kong.conf
里)
API提供者的一個常見用例是讓Kong在代理端口上同時服務于一個網站和API本身——在生產中有80
或443
。例如:https://my-api.com
(網站)和https://my-api.com/api/v1
(API)。
為了實現這一點,我們不能簡單地聲明一個新的虛擬服務模塊,就像我們在上一節中所做的那樣。一個好的解決方案是使用一個定制的Nginx配置模板,該模板可以內聯nginx_kong.lua
。添加一個新的location
塊,與Kong代理location
塊一起服務于網站:
# --------------------- # custom_nginx.template # ---------------------worker_processes ${{NGINX_WORKER_PROCESSES}}; # can be set by kong.conf daemon ${{NGINX_DAEMON}}; # can be set by kong.confpid 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
進行添加修改。
prefix
工作目錄。相當于Nginx的前綴路徑,包含臨時文件和日志。每個流程必須有一個單獨的工作目錄。
默認:/usr/local/kong
log_level
Nginx服務器的日志級別。可以在<prefix>/logs/error.log
請參閱 http://nginx.org/en/docs/ngx_core_module.html#error_log,以獲得公認的值列表。
默認:notice
proxy_access_log
代理端口請求訪問日志的路徑。設置為off
以禁用日志代理請求。如果這個值是相對路徑,那么它將被放置于前綴路徑之下。
默認:logs/access.log
proxy_error_log
代理端口請求錯誤日志的路徑。這些日志的粒度由log_level
指令進行調整。
默認:logs/error.log
admin_access_log
Admin API的路徑請求訪問日志。設置為off
以禁用Admin API請求日志。如果這個值是相對路徑,那么它將被放置于前綴路徑之下。
默認:logs/admin_access.log
admin_error_log
Admin API請求錯誤日志的路徑。這些日志的粒度由log_level指令進行調整。
默認:logs/error.log
custom_plugins
這個節點應該加載的附加插件的逗號分隔列表。使用這個屬性來加載與Kong不捆綁的定制插件。插件將從kong.plugins.{name}.*
命名空間加載。
默認:none
示例:my-plugin,hello-world,custom-rate-limiting
anonymous_reports
發送匿名的使用數據,比如錯誤堆棧跟蹤,以幫助改進Kong。
默認:on
proxy_listen
代理服務偵聽的地址和端口的逗號分隔的列表。代理服務是Kong的公共入口點,它代理從您的使用者到您的后端服務的流量。這個值接受IPv4、IPv6和主機名。
可以為每一對指定一些后綴:
ssl
將要求通過啟用TLS的特定地址/端口進行所有連接。http2
允許客戶端打開http/2連接到Kong的代理服務proxy_protocol
將為給定的地址/端口啟用代理協議。這個節點的代理端口,啟用了“控制面板”模式(沒有流量代理功能),可以配置連接到同一數據庫的節點集群。
查看 http://nginx.org/en/docs/http/ngx_http_core_module.html#listen 用于描述這個和其他*_listen
值的接受格式。
默認: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
管理接口監聽的地址和端口的逗號分隔的列表。Admin接口是允許您配置和管理Kong的API。對該接口的訪問應該僅限于Kong管理員。這個值接受IPv4、IPv6和主機名。可以為每一對指定一些后綴:
ssl
將要求通過啟用TLS的特定地址/端口進行所有連接。http2
允許客戶端打開http/2連接到Kong的代理服務proxy_protocol
將為給定的地址/端口啟用代理協議。這個值可以被設置為off
,從而禁用這個節點的Admin接口,從而使“數據面板”模式(沒有配置功能)從數據庫中拉出它的配置更改。
默認:127.0.0.1:8001, 127.0.0.1:8444 ssl
示例:127.0.0.1:8444 http2 ssl
nginx_user
定義工作進程使用的用戶和組憑據。如果省略組,則使用名稱與用戶名相同的組。
默認:nobody nobody
示例:nginx www
nginx_worker_processes
確定Nginx生成的工作進程的數量。請參閱http://nginx.org/en/docs/ngx_core_module.html#worker 流程,以便詳細使用該指令和對已接受值的描述。
默認值:auto
nginx_daemon
確定Nginx是否會作為守護進程或前臺進程運行。主要用于開發或在Docker環境中運行Kong。
查閱 http://nginx.org/en/docs/ngx_core_module.html#daemon.
默認:on
mem_cache_size
數據庫實體內存緩存的大小。被接受的單位是k和m,最低推薦值為幾個MBs。
默認:128m
ssl_cipher_suite
定義Nginx提供的TLS密碼。可接受的值modern
, intermediate
, old
, or custom
。請參閱 https://wiki.mozilla.org/Security/Server_Side_TLS
,了解每個密碼套件的詳細描述。
默認值:modern
ssl_ciphers
定義一個由Nginx提供的LTS ciphers的自定義列表。這個列表必須符合openssl ciphers
定義的模式。如果ssl_cipher_suite
不是custom
,那么這個值就會被忽略。
默認值:none
ssl_cert
啟用SSL時,proxy_listen
的SSL證書的絕對路徑。
默認值:none
ssl_cert_key
啟用SSL時,proxy_listen
的SSL key的絕對路徑。
默認值:none
client_ssl
當代理請求時,確定Nginx是否應該發送客戶端SSL證書。
默認值:off
client_ssl_cert
如果啟用了client_ssl,用于proxy_ssl_certificate
配置的客戶端SSL證書的絕對路徑。注意,這個值是靜態地在節點上定義的,并且當前不能在每個api的基礎上配置。
默認值:none
client_ssl_cert_key
如果啟用了client_ssl,用于proxy_ssl_certificate_key
配置的客戶端SSL證書的絕對路徑。注意,這個值是靜態地在節點上定義的,并且當前不能在每個api的基礎上配置。
默認值:none
admin_ssl_cert
啟用了SSL后, admin_listen
的SSL證書的絕對路徑。
默認值:none
admin_ssl_cert_key
啟用了SSL后, admin_listen
的SSL key的絕對路徑。
默認值:none
upstream_keepalive
在每個工作進程,設置緩存中保存的upstream服務的空閑keepalive連接的最大數量。當超過這個數字時,會關閉最近最少使用的連接。
默認值:60
server_tokens
在錯誤頁面,和Server
或Via
(如果請求被代理)的響應頭字段,啟用或禁用展示Kong的版本。
默認值:on
latency_tokens
在X-Kong-Proxy-Latency
和X-Kong-Upstream-Latency
響應頭字段中,啟用或禁用展示Kong的潛在信息。
默認值:on
trusted_ips
定義可信的IP地址塊,使其知道如何發送正確的 X-Forwarded-*
頭部信息。來自受信任的ip的請求使Kong轉發他們的 X-Forwarded-*
headers upstream。不受信任的請求使Kong插入自己的 X-Forwarded-*
headers。
該屬性還在Nginx配置中設置 set_real_ip_from
指令(s)。它接受相同類型的值(CIDR塊),但它是一個逗號分隔的列表。
如果相信 all /!\ IPs,請把這個值設為0.0.0.0/0,::/0
。
如果特殊值unix:
被指定了,所有的unix域套接字都將被信任。
查閱the Nginx docs 了解 更詳細的set_real_ip_from
配置資料。
Default: none
real_ip_header
定義請求頭字段,它的值將被用來替換客戶端地址。在Nginx配置中使用相同名稱的指令 ngx_http_realip_module 設置該值。
如果這個值接收到 proxy_protocol
,那么 proxy_protocol
參數將被附加到Nginx模板的 listen
指令中。
查閱 the Nginx docs 尋找更詳細的描述。
默認值: X-Real-IP
real_ip_recursive
該值設置了Nginx配置中同名的ngx_http_realip_module 指令。
查閱 the Nginx docs 尋找更詳細的描述。
默認值: off
client_max_body_size
指定在 Content-Length 的請求頭中,定義Kong代理的請求的最大被允許的請求體大小。如果請求超過這個限度,Kong將返回413(請求實體太大)。將該值設置為0將禁用檢查請求體的大小。
提示: 查閱關于the Nginx docs 這個參數的進一步描述。數值可以用k
或m
后綴,表示限制是千字節,還是兆字節。
默認值:0
client_body_buffer_size
定義讀取請求主體的緩沖區大小。如果客戶端請求體大于這個值,則閥體將被緩沖到磁盤。請注意,當閥體被緩沖到磁盤的時候,訪問或操縱請求主體可能無法工作,因此最好將這個值設置為盡可能高的值。(例如,將其設置為client_max_body_size
,以迫使請求體保持在內存中)。請注意,高并發性環境需要大量的內存分配來處理許多并發的大型請求體。
提示: 查閱關于 the Nginx docs 這個參數的進一步描述。數值可以用k
或m
后綴,表示限制是千字節,還是兆字節。
默認值:8k
error_default_type
當請求Accept標頭丟失時,使用默認的MIME類型,且Nginx為這個請求返回一個錯誤。可接受的值包括 text/plain
, text/html
, application/json
, 和application/xml
.
默認值:text/plain
Kong將存儲所有的數據(如api、消費者和插件)到Cassandra或PostgreSQL。
屬于同一集群的所有Kong節點都必須連接到同一個數據庫。
從Kong0.12.0開始:
PostgreSQL 9.4支持應該被認為是棄用。鼓勵用戶升級到9.5+
應該考慮支持Cassandra 2.1的支持。鼓勵用戶升級到2.2+
database
確定這個節點將使用哪個PostgreSQL或Cassandra作為它的數據存儲。可以設置為:postgres
和 cassandra
。
默認值:postgres
Postgres settings
名稱 | 描述 |
---|---|
pg_host | Postgres服務器的主機 |
pg_port | Postgres服務器的端口 |
pg_user | Postgres用戶 |
pg_password | Postgres用戶的密碼 |
pg_database | 數據庫連接。必須存在 |
pg_ssl | 啟用SSL連接到服務器 |
pg_ssl_verify | 如果啟用了pg_ssl ,則切換服務器證書驗證。看到lua_ssl_trusted_certificate 設置。 |
Cassandra settings
名稱 | 描述 |
---|---|
cassandra_contact_points | 指向您的Cassandra集群的鏈接點列表,使用逗號分割。 |
cassandra_port | 你的節點監聽的端口 |
cassandra_keyspace | 在集群中使用的關鍵空間。如果不存在,就會被創建。 |
cassandra_consistency | 在閱讀/寫作時使用一致性設置。 |
cassandra_timeout | 讀取/寫入 超時(ms)時間。 |
cassandra_ssl | 啟用SSL連接到節點。 |
cassandra_ssl_verify | 如果啟用了cassandra_ssl ,則切換服務器證書驗證。查看 lua_ssl_trusted_certificate 設置。 |
cassandra_username | 使用PasswordAuthenticator時的用戶名。 |
cassandra_password | 在使用PasswordAuthenticator時的密碼。 |
cassandra_consistency | 在讀取/寫入Cassandra集群時使用一致性設置。 |
cassandra_lb_policy | 當在您的Cassandra集群中分布查詢時使用負載平衡策略。可設置為 RoundRobin 和 DCAwareRoundRobin 。如果您使用的是多數據中心集群,則后者更好。如果是這樣,還要設置 cassandra_local_datacenter 。 |
cassandra_local_datacenter | 在使用DCAwareRoundRobin 政策時,必須指定本地(最近)的集群名稱到這個Kong節點。 |
cassandra_repl_strategy | 如果第一次創建密鑰空間,請指定復制策略。 |
cassandra_repl_factor | 為SimpleStrategy 指定一個復制因子。 |
cassandra_data_centers | 為NetworkTopologyStrategy (網絡拓撲策略)指定數據中心。 |
cassandra_schema_consensus_timeout | Cassandra節點之間同步scheme的超時( ms)時間。這個值只在數據遷移期間使用。 |
為了避免與數據存儲不必要的通信,Kong可配置緩存實體(比如api、消費者、憑證等等)的間隔時間。如果緩存實體被更新,它也會處理也會失效。
本節介紹關于配置Kong此類配置實體緩存。
db_update_frequency
頻率(以秒為單位),用于檢查帶有數據存儲的更新實體。當節點通過Admin API創建、更新或刪除實體時,其他節點需要等待下一次輪詢(由這個值配置),以清除舊的緩存實體并開始使用新的緩存。
默認值:5 seconds
db_update_propagation
在數據存儲中為實體所花費的時間(以秒為單位)被傳播到另一個數據中心的副本節點。當在分布式環境中,比如多數據中心Cassandra集群時,這個值應該是Cassandra將一行傳播到其他數據中心的最大秒數。當設置了該值,該屬性將增加Kong傳播實體變更所花費的時間。單數據中心設置或PostgreSQL服務器不應該受到這樣的延遲,并且這個值可以安全地設置為0。
默認值: 0 seconds
db_cache_ttl
該節點數據存儲實體緩存的生存時間(以秒為單位)。數據庫遺漏(沒有實體)也會根據這個設置進行緩存。如果設置為0,那么這種緩存的實體/遺漏永遠不會過期。
默認值:3600 seconds(1小時)
Kong將把主機名解析為 SRV
或 A
記錄(按照該順序,CNAME
記錄將在此過程中被取消)。如果一個名稱被解析為SRV
記錄,它會通過從DNS服務器接收到端口以覆蓋給定的端口號。
DNS選項SEARCH
和NDOTS
(來自/etc/resolv.conf 文件)將被用于將短名稱擴展到完全限定的名稱。因此,它將首先嘗試完整 SEARCH
SRV
類型的列表,如果失敗,它將會嘗試SEARCH
A
記錄列表,等等。
在ttl
的持續時間內,內部DNS解析器將對DNS記錄的條目上做負載均衡請求。對于SRV
記錄,可以設置權重,但是它只會使用記錄中最低優先級字段條目。
dns_resolver
設置域名服務器列表,使用逗號分隔。格式如: ip[:port]
。如果沒有制定域名服務器,name就使用本地 resolv.conf
文件。端口默認為53。可以使用IPv4和IPv6地址。
默認值: none
dns_hostsfile
要使用的主機文件。這個文件只被讀取一次,然后會存儲在內存中。要在修改后想再次讀取該文件,必須重新加載Kong。
默認值:/etc/hosts
dns_order
解決不同記錄類型的順序。LAST
類型指的是最后一次成功的查找的類型(對于指定的名稱)。格式是一個(大小寫不敏感)逗號分隔的列表。
默認值: LAST
,SRV
,A
,CNAME
dns_stale_ttl
定義在緩存中保存DNS記錄的TTL
時間。當新的DNS記錄在后臺獲取時,這個值將被使用。陳舊的數據將從記錄的過期時間使用,直到刷新查詢完成,或者dns_stale_ttl
的秒數已經過去。
默認值:4
dns_not_found_ttl
空DNS響應和 "(3) name error" 響應的TTL時間(以秒為單位)
默認值:30
dns_error_ttl
錯誤響應的TTL時間(以秒為單位)
默認值:1
dns_no_sync
如果啟用了,那么在cache-miss時,每個請求都會觸發自己的dns查詢。當為相同的名稱/類型禁用多個請求時,將同步到單個查詢。
默認值: off
從lua-nginx-module繼承的附加設置,可以更靈活和更高級的使用。
有關更多信息,請參見lua-nginx-module文檔:https://github.com/openresty/lua-nginx-module
lua_ssl_trusted_certificate
在PEM格式的Lua cosockets的證書權威文件的絕對路徑。該證書將用于驗證Kong的數據庫連接,當啟用pg_ssl_verify
或cassandra_ssl_verify
時。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_ssl_trusted_certificate
默認值: none
lua_ssl_verify_depth
在Lua cosockets使用的服務器證書鏈中設置驗證深度,通過lua_ssl_trusted_certificate
設置。
這包括為Kong的數據庫連接配置的證書。
詳情查閱: 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
默認值: none
lua_package_cpath
設置Lua C模塊搜索路徑(LUA_CPATH)。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_package_cpath
默認值: none
lua_socket_pool_size
指定與每個遠程服務器相關聯的每個cosocket連接池的大小限制。
詳情查閱:https://github.com/openresty/lua-nginx-module#lua_socket_pool_size
默認值:30
穿梭機:開源API網關系統(Kong教程)入門到精通
日期:2018-04 瀏覽次數:6766
日期:2017-02 瀏覽次數:3440
日期:2017-09 瀏覽次數:3663
日期:2017-12 瀏覽次數:3534
日期:2018-12 瀏覽次數:4828
日期:2016-12 瀏覽次數:4586
日期:2017-07 瀏覽次數:13649
日期:2017-12 瀏覽次數:3516
日期:2018-06 瀏覽次數:4269
日期:2018-05 瀏覽次數:4448
日期:2017-12 瀏覽次數:3561
日期:2017-06 瀏覽次數:3986
日期:2018-01 瀏覽次數:3947
日期:2016-12 瀏覽次數:3917
日期:2018-08 瀏覽次數:4430
日期:2017-12 瀏覽次數:3713
日期:2016-09 瀏覽次數:6410
日期:2018-07 瀏覽次數:3213
日期:2016-12 瀏覽次數:3234
日期:2018-10 瀏覽次數:3388
日期:2018-10 瀏覽次數:3484
日期:2018-09 瀏覽次數:3583
日期:2018-02 瀏覽次數:3601
日期:2015-05 瀏覽次數:3526
日期:2018-09 瀏覽次數:3309
日期:2018-06 瀏覽次數:3436
日期:2017-02 瀏覽次數:3876
日期:2018-02 瀏覽次數:4342
日期:2018-02 瀏覽次數:4178
日期:2016-12 瀏覽次數:3577
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.