備注:
只是簡單的進行說明配置文件,不會牽扯到源碼
1. 配置文件位置
// 通過ps 查找
ps -ef |grep nginx
/usr/local/openresty/nginx/sbin/nginx -p /usr/local/kong -c nginx.conf
可以看到kong 不是直接在依賴的openresty 目錄進行配置的,這樣可以減少對於原有的污染
在實際項目中還是有比較大的借鑒價值的,類似的有lapis 開發模式
2. 配置文件結構
// 包含 nginx.conf nginx-kong.conf
nginx.conf 比較簡單,使用的是推薦的include 方式
http {
include 'nginx-kong.conf';
}
nginx-kong.conf kong 主要配置都在里面,包含api 地址 admin 地址,以及框架的初始化
3. nginx-kong.conf 說明
http 部分
kong 初始化,主要是框架初始化,以及數據空間配置,動態proxy 配置
如下:
init_by_lua_block {
kong = require 'kong'
kong.init()
}
init_worker_by_lua_block {
kong.init_worker()
}
upstream kong_upstream {
server 0.0.0.1;
balancer_by_lua_block {
kong.balancer()
}
keepalive 60;
}
server 部分, 各階段插件注入,proxy_pass 配置, api 入口地址 admin 配置 證書配置,目前支持sni ,可以動態添加證書
ssl
ssl_certificate_by_lua_block {
kong.ssl_certificate()
}
rewrite_by_lua_block {
kong.rewrite()
}
access_by_lua_block {
kong.access()
}
header_filter_by_lua_block {
kong.header_filter()
}
body_filter_by_lua_block {
kong.body_filter()
}
log_by_lua_block {
kong.log()
}
proxy_pass
proxy_http_version 1.1;
proxy_set_header Host $upstream_host;
proxy_set_header Upgrade $upstream_upgrade;
proxy_set_header Connection $upstream_connection;
proxy_set_header X-Forwarded-For $upstream_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $upstream_x_forwarded_proto;
proxy_set_header X-Forwarded-Host $upstream_x_forwarded_host;
proxy_set_header X-Forwarded-Port $upstream_x_forwarded_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass_header Server;
proxy_pass_header Date;
proxy_ssl_name $upstream_host;
proxy_pass $upstream_scheme://kong_upstream$upstream_uri;
admin api
location / {
default_type application/json;
content_by_lua_block {
kong.serve_admin_api()
}
}
備注:
https 加密套件的配置在實際使用還是比較有價值的,具體nginx https 配置可以參考
ssl_protocols TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_prefer_server_ciphers on;
sl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
https://github.com/Mashape/kong/ https://getkong.org/install/centos/