Kong配置文件
在deepin系統下,Kong的配置文件在/etc/kong/目錄下,我是用的是由kong.conf.default複製的kong.conf文件
通用部分
prefix
kong的工作路徑,默認/usr/local/kong/,差生的日誌文件等默認都在該目錄下。
log_level
日誌等級,默認是notice。日誌的等級是[ debug | info | notice | warn | error | crit ],從左向右詳細度依次遞減
proxy_access_log
訪問日誌,默認是logs/access.log。可以修改自己的文件路徑,如果是相對路徑,會在前面加prefix的參數。當設置爲off的時候,不寫日誌
proxy_error_log
錯誤日誌,默認是logs/error.log。可以修改自己的文件路徑,如果是相對路徑,會在前面加prefix的參數
admin_access_log
管理訪問日誌,默認是logs/admin_access.log。其他同proxy_access_log參數
admin_error_log
管理錯誤日誌,默認是logs/error.log。管理錯誤日誌和訪問錯誤日誌在一個文件下,也可以分開,同時其錯誤日誌等級依賴於log_level參數
status_access_log
狀態訪問日誌,默認是off關閉。訪問狀態API的時候的訪問日誌,相對路徑加prefix參數
status_error_log
狀態錯誤日誌,默認在logs/status_error.log。同時其錯誤日誌等級依賴於log_level參數
plugins
插件列表,以逗號分割的字符串。在kong啓動的時候會載入列表中的所有插件,當值爲off的時候不裝載任何插件。如果之前配置過插件但是沒有在列表中,kong不能啓動,所以當刪除某個插件時,移除其所有實例,然後再重啓。
go_pluginserver_exe
運行golang寫的插件的路徑,默認是/usr/local/bin/go-pluginserver
go_plugins_dir
golang寫的插件的下載地址,默認是off。當值是off的時候不允許適用golang寫的插件。
anonymous_reports
發送匿名報告給kong開發者,默認是on。
混合模式部分
role
混合模式中有兩種角色,一種是控制節點,一種是數據節點。控制節點可以將自己的配置更新給數據節點。其中控制節點可以使用數據庫,數據節點不使用數據庫。
traditional 不使用混合模式
control_plane 控制節點
data_plane 數據節點
cluster_cert
當使用混合模式時,用於保證控制節點和數據節點信息安全的證書的文件名。使用kong hybrid命令創建證書/鑰匙對。
cluster_cert_key
當使用混合模式時,用於保證控制節點和數據節點信息安全的證書鑰匙的文件名。使用kong hybrid命令創建證書/鑰匙對。
cluster_control_plane
僅使用於數據節點,指定要更新的配置來自於哪個控制節點,以host:port結構
cluster_listen
以逗號分割的host:port地址列表,指定哪些控制節點來監聽數據節點的連接,僅使用於控制節點
Nginx部分(和Nginx配置相同)
proxy_listen
代理監聽,以逗號分割的地址端口對,形如0.0.0.0:8001。是Kong的公共入口,通過其訪問到後面的服務。
後綴可以配置配置每個地址對
後綴名 | 作用 |
---|---|
ssl | 要求所有連接都是基於安全傳輸層協議 |
http2 | 允許客戶端與Kong建立http2連接 |
proxy_protocol | 對於監聽的地址允許適用代理協議 |
deferred | 在Linux系統中適用延遲接受 |
bind | 對於指定的監聽地址分開綁定 |
reuseport | 每個工作進程創建自己獨立的socket |
backlog | 指定tcp隊列的最大值,在linux系統中,要同時修改net.core.somaxconn和backlog纔可以提升隊列大小 |
stream_listen
流監聽,以逗號分割的地址端口對,包含的後綴有proxy_protocol,bind, reuseport, backlog
admin_listen
管理監聽,對於管理Api的訪問監聽,和參數和後綴proxy_listen相同
status_listen
狀態監聽,獲取Kong節點的狀態的訪問監聽
nginx_user
聲明nginx的使用者
nginx_worker_processes
nginx的工作進程數,默認是auto,和內核數相同
nginx_daemon
nginx是否後臺運行,默認是on,開啓的狀態
mem_cache_size
配置緩存大小,默認128m,也接受形如128k的參數樣式
ssl_cert
安全證書的絕對路徑
ssl_cert_key
安全證書祕鑰的絕對路徑
client_ssl
雙向認證時,發送客戶端證書,默認是off
client_ssl_cert
客戶端安全證書的絕對路徑
client_ssl_cert_key
客戶端安全證書祕鑰的絕對路徑
admin_ssl_cert
管理api訪問的安全證書絕對路徑
admin_ssl_cert_key
管理api訪問的安全證書祕鑰絕對路徑
headers
以後逗號分割的在返回給客戶端時,需要在response的header中注入的內容
參數 | 內容 |
---|---|
Server | Kong/x.y.z,在由Kong產生的response中注入Kong的信息 |
Via | Kong/x.y.z,當成功訪問Kong之後在response中注入Kong的信息 |
X-Kong-Proxy-Latency | 毫秒級時長,在通過Kong以及所有插件之後,還沒有進入代理服務的時長 |
X-Kong-Response-Latency | 毫秒級時長,當由Kong產生的response,所用的時長 |
X-Kong-Upstream-Latency | 毫秒是時長,由後臺產生response的時長 |
X-Kong-Admin-Latency | 毫秒級時長,管理api訪問的時長 |
server_tokens | 相當於Server和Via |
latency_tokens | 包括上面的所有的時長參數 |
trusted_ips
可信IP,如果請求的IP在可信IP名單中,會在請求頭的X-Forwarded-*中添加IP進來,如果不在可信名單中,則會在請求頭的X-Forwarded-*中添加Kong自己的IP地址。形如192.168.1.0/24這樣的掩碼的形式表示。
real_ip_header
聲明請求頭的哪些key會被客戶端真實IP替換。可選參數: X-Real-IP,X-Forwarded-For,proxy_protocol
real_ip_recursive
是否遞歸地排除直至得到用戶ip,默認是關閉的
client_max_body_size
請求體的最大限制,單位是k或者m,如果設置爲0,不檢驗其大小
client_body_buffer_size
讀取請求體時的緩衝區大小,默認是8k
數據存儲部分
database
默認是postgres,提供了兩種選擇,另一種cassandra(沒用過,沒聽過)
postgres配置列表
配置名 | 解釋 | 默認 |
---|---|---|
pg_host | 數據庫地址 | 127.0.0.1 |
pg_port | 數據庫端口號 | 5432 |
pg_timeout | 數據庫鏈接,查詢,寫入超時時間(毫秒) | 5000 |
pg_user | 數據庫用戶名 | kong |
pg_password | 密碼 | none |
pg_database | 要鏈接的數據庫 | kong |
pg_schema | 數據庫綱要(不會翻譯,應該不重要) | none |
pg_ssl | 切換Kong與數據庫的鏈接使用ssl | off |
pg_ssl_verify | 切換安全鏈接校驗 | off |
pg_max_concurrent_queries | 併發最大的查詢數 | 0不檢驗 |
pg_semaphore_timeout | 超時時長(超時會返回錯誤) | 60000 |
數據庫緩存部分
未避免和數據庫的無效鏈接,Kong緩存了配置實體,也處理實體更新後的失效。
db_update_frequency
數據更新頻率,每隔多少秒,更新數據庫中的對應的實體到緩存中,也就是說適用Admin Api進行操作並能夠立即生效。默認是5秒
db_update_propagation
數據更新廣播,實質上是數據庫的同步,備份數據庫的同步時長(秒)
db_cache_ttl
當把實體緩存到Kong緩存中,多長時間(秒)失效。默認是0,也就是永遠不失效
db_resurrect_ttl
失效的緩存實體,間隔多長時間(秒)請求數據庫刷新緩存,默認是30秒
db_cache_warmup_entities
默認是services, plugins,預加載模塊到緩存中,提高了第一訪問的速度。
DNS解析部分
默認情況下DNS解析會適用/etc/hosts和/etc/resolv.conf作爲DNS解析的標準文件。
dns_resolver
dns解析器,已逗號分割的,形如localhost 127.0.0.1:5000, other 127.0.0.1:80
dns_hostfile
自定義hosts文件,默認是系統下的hosts文件
dns_order
dns處理順序,LAST:上一次成功找到的記錄
SRV: 權重記錄
A: address地址記錄
CNAME: 別名記錄
dns_valid_ttl
dns記錄有效時長
dns_stale_ttl
dns記錄在過期之後,在刷新之前還會在多長(分鐘)內被使用
dns_no_sync
同步開關,如果開啓,每個沒有命中dns緩存的請求都自己去查詢dns
如果關閉,不同的請求都同步成一個dns查詢
校準與性能部分
router_consistency
當使用admin api進行路由操作時,需要重建路由映射,strict模式,同步的重建路由, eventual模式,異步的進行重建路由,默認是strict模式
router_update_frequency
後臺多久(秒)檢測一次路由變更,默認是1秒,檢測到變更立即重建路由