本篇文件介绍kong配置文件的配置
配置文件
Kong启动时,如果存在 /etc/kong/kong.conf 文件,将会使用该文件的配置,该文件由开发者自己生成
/etc/kong/kong.conf.default是kong提供的模板配置,开发者可参考该配置
基于配置文件的Docker启动
如下,我们使用配置文件启动Kong Docker
1.新建一个TestKong目录
2.目录下新建kong.conf,其内容如下
database = postgres
pg_host = postgres
pg_port = 5432
pg_user = kong
pg_password = kong123
pg_database = kong
3.目录下新建Dockerfile文件,其内容如下
FROM kong:2.0
COPY kong.conf /etc/kong/kong.conf
4.执行如下命令生产镜像
# docker build -t iceemblem/kongtest:0.1 .
5.执行如下命令运行测试kong docker
# docker run -d --name kongtest \
--network kongnet \
--restart=always \
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
-e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001" \
-e "KONG_ADMIN_LISTEN_SSL=0.0.0.0:8444" \
-p 7000:8000 \
-p 7443:8443 \
-p 7001:8001 \
-p 7444:8444 \
iceemblem/kongtest:0.1
6.访问测试kong
如下,我们可以访问127.0.0.1:7000可以查看kong已经运行,如果你跟着直接的文章教程走,那么你访问http://127.0.0.1:7000/netkongtest/WeatherForecast将会看到测试站点的结果
Kong的配置
如下,我列出了一下常用的配置,详细配置需要查看kong容器的/etc/kong/kong.conf.default文件
#------------------------------------------------------------------------------
# 常规配置
#------------------------------------------------------------------------------
#prefix = /usr/local/kong/ # 工作目录,包含临时文件和日志
#log_level = notice # 日志等级,日志路径为 `<prefix>/logs/error.log`
#proxy_access_log = logs/access.log # 请求访问的日志,设为 off 可以关闭
#proxy_error_log = logs/error.log # 请求错误的日志,路径前缀为 <prefix>
#admin_access_log = logs/admin_access.log # Admin Api 的请求访问日志,设为 off 可以关闭
#admin_error_log = logs/error.log # Admin Api 的请求错误日志,路径前缀为 <prefix>
#plugins = bundled # kong 启动时加载的插件名称列表,以英文","分隔,如 bundled,custom-auth,custom-log
#------------------------------------------------------------------------------
# NGINX 代理配置
#------------------------------------------------------------------------------
#proxy_listen = 0.0.0.0:8000 reuseport backlog=16384, 0.0.0.0:8443 http2 ssl reuseport backlog=16384
# 代理监听地址,以","分隔
#
# 一些选项的解释
# - `0.0.0.0:8000` 监听所有地址的 8000 端口
# - `ssl` 使用 TLS 握手
# - `http2` 使用 HTTP/2 协议
# - `reuseport` 为每个进程创建单独的套接字
# - `backlog=N` 挂起的TCP连接队列的最大长度
#admin_listen = 127.0.0.1:8001 reuseport backlog=16384, 127.0.0.1:8444 http2 ssl reuseport backlog=16384
# Admin API 的配置,与 proxy_listen 相同
#nginx_user = nobody nobody # 定义工作进程使用的用户和用户组,默认为启动时的用户和用户组
#nginx_worker_processes = auto # 定义工作进程数
#------------------------------------------------------------------------------
# SSL 配置
#------------------------------------------------------------------------------
#ssl_cert = # `proxy_listen` 地址的 SSL 证书绝对路径
#ssl_cert_key = # `proxy_listen` 地址的 SSL 密钥绝对路径
#admin_ssl_cert = # `admin_listen` 地址的 SSL 证书绝对路径
#admin_ssl_cert_key = # `admin_listen` 地址的 SSL 密钥绝对路径
#------------------------------------------------------------------------------
# Postgres 数据库配置
#------------------------------------------------------------------------------
#database = postgres # 是数据库类型,此处为 postgres
#pg_host = 127.0.0.1 # Postgres 数据库地址
#pg_port = 5432 # Postgres 数据库端口
#pg_timeout = 5000 # Postgres 数据库连接超时时间,毫秒
#pg_user = kong # Postgres 用户名
#pg_password = # Postgres 密码
#pg_database = kong # Postgres 数据库名
#------------------------------------------------------------------------------
# 其他配置
#------------------------------------------------------------------------------
#trusted_ips = # 受信任的IP列表,由该列表的IP发送的请求将原样转发 `X-Forwarded-*`
# 否则 kong 插入自己的 `X-Forwarded-*`,以","分隔
# 若信任所有地址,则使用 0.0.0.0/0,::/0
#real_ip_header = X-Real-IP # 真实IP头,想要获取客户端的IP地址可利用该字段
指令注入
Kong基于nginx,想要配置nginx可使用一定命名规则的配置达到配置nginx
nginx_http_:将注入到nginx的http区块
nginx_proxy_:将注入到nginx的server区块
nginx_http_upstream_:将注入到nginx的upstream区块
示例kong.conf配置:
# 配置nginx的http区块ssl_protocols
nginx_http_ssl_protocols = TLSv1.1 TLSv1.2 TLSv1.3