2020-08-18 20:18:55 +08:00
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# PLEASE DO NOT UPDATE THIS FILE!
# If you want to set the specified configuration value, you can set the new
# value in the conf/config.yaml file.
#
apisix :
2020-12-18 08:29:17 +08:00
node_listen : 9080 # APISIX listening port
2020-08-18 20:18:55 +08:00
enable_admin : true
2020-12-18 08:29:17 +08:00
enable_admin_cors : true # Admin API support CORS response headers.
2020-08-18 20:18:55 +08:00
enable_debug : false
2020-12-18 08:29:17 +08:00
enable_dev_mode : false # Sets nginx worker_processes to 1 if set to true
enable_reuseport : true # Enable nginx SO_REUSEPORT switch if set to true.
2020-08-18 20:18:55 +08:00
enable_ipv6 : true
2020-12-18 08:29:17 +08:00
config_center: etcd # etcd : use etcd to store the config value
# yaml: fetch the config value from local yaml file `/your_path/conf/apisix.yaml`
2020-08-18 20:18:55 +08:00
2021-05-07 08:55:17 +08:00
#proxy_protocol: # Proxy Protocol configuration
#listen_http_port: 9181 # The port with proxy protocol for http, it differs from node_listen and port_admin.
2020-08-18 20:18:55 +08:00
# This port can only receive http request with proxy protocol, but node_listen & port_admin
# can only receive http request. If you enable proxy protocol, you must use this port to
# receive http request with proxy protocol
2021-05-07 08:55:17 +08:00
#listen_https_port: 9182 # The port with proxy protocol for https
#enable_tcp_pp: true # Enable the proxy protocol for tcp proxy, it works for stream_proxy.tcp option
#enable_tcp_pp_to_upstream: true # Enables the proxy protocol to the upstream server
2020-11-07 00:04:28 +08:00
enable_server_tokens : true # Whether the APISIX version number should be shown in Server header.
# It's enabled by default.
2021-01-27 14:45:32 +08:00
# configurations to load third party code and/or override the builtin one.
extra_lua_path : "" # extend lua_package_path to load third party code
extra_lua_cpath : "" # extend lua_package_cpath to load third party code
2020-08-18 20:18:55 +08:00
proxy_cache : # Proxy Caching configuration
cache_ttl : 10s # The default caching time if the upstream does not specify the cache time
zones : # The parameters of a cache
2020-12-18 08:29:17 +08:00
- name : disk_cache_one # The name of the cache, administrator can be specify
2020-08-18 20:18:55 +08:00
# which cache to use by name in the admin api
2020-12-18 08:29:17 +08:00
memory_size : 50m # The size of shared memory, it's used to store the cache index
disk_size : 1G # The size of disk, it's used to store the cache data
2021-07-13 14:49:30 +08:00
disk_path : /tmp/disk_cache_one # The path to store the cache data
cache_levels : 1 : 2 # The hierarchy levels of a cache
2021-05-07 08:55:17 +08:00
#- name: disk_cache_two
# memory_size: 50m
# disk_size: 1G
# disk_path: "/tmp/disk_cache_two"
# cache_levels: "1:2"
2020-08-18 20:18:55 +08:00
allow_admin : # http://nginx.org/en/docs/http/ngx_http_access_module.html#allow
- 127.0 .0 .0 /24 # If we don't set any IP list, then any IP access is allowed by default.
2021-05-07 08:55:17 +08:00
#- "::/64"
#port_admin: 9180 # use a separate port
#https_admin: true # enable HTTPS when use a separate port for Admin API.
2020-08-18 20:18:55 +08:00
# Admin API will use conf/apisix_admin_api.crt and conf/apisix_admin_api.key as certificate.
admin_api_mtls : # Depends on `port_admin` and `https_admin`.
2020-12-18 08:29:17 +08:00
admin_ssl_cert : "" # Path of your self-signed server side cert.
admin_ssl_cert_key : "" # Path of your self-signed server side key.
admin_ssl_ca_cert : "" # Path of your self-signed ca cert.The CA is used to sign all admin api callers' certificates.
2020-08-18 20:18:55 +08:00
# Default token when use API to call for Admin API.
# *NOTE*: Highly recommended to modify this value to protect APISIX's Admin API.
# Disabling this configuration item means that the Admin API does not
# require any authentication.
admin_key :
-
2021-07-13 14:49:30 +08:00
name : admin
2020-08-18 20:18:55 +08:00
key : edd1c9f034335f136f87ad84b625c8f1
role: admin # admin : manage all configuration data
# viewer: only can view configuration data
-
2021-07-13 14:49:30 +08:00
name : viewer
2020-08-18 20:18:55 +08:00
key : 4054f7cf07e344346cd3f287985e76a2
role : viewer
delete_uri_tail_slash : false # delete the '/' at the end of the URI
2021-02-10 12:01:58 +08:00
global_rule_skip_internal_api : true # does not run global rule in internal apis
# api that path starts with "/apisix" is considered to be internal api
2020-08-18 20:18:55 +08:00
router :
2021-07-13 14:49:30 +08:00
http: radixtree_uri # radixtree_uri : match route by uri(base on radixtree)
2020-08-18 20:18:55 +08:00
# radixtree_host_uri: match route by host + uri(base on radixtree)
2020-12-30 22:13:05 +08:00
# radixtree_uri_with_parameter: like radixtree_uri but match uri with parameters,
# see https://github.com/api7/lua-resty-radixtree/#parameters-in-path for
# more details.
2021-07-13 14:49:30 +08:00
ssl: radixtree_sni # radixtree_sni : match route by SNI(base on radixtree)
2021-05-07 08:55:17 +08:00
#stream_proxy: # TCP/UDP proxy
# tcp: # TCP proxy port list
2021-06-11 17:23:16 +08:00
# - addr: 9100
# tls: true
# - addr: "127.0.0.1:9101"
2021-05-07 08:55:17 +08:00
# udp: # UDP proxy port list
# - 9200
# - "127.0.0.1:9201"
#dns_resolver: # If not set, read from `/etc/resolv.conf`
2020-08-18 20:18:55 +08:00
# - 1.1.1.1
# - 8.8.8.8
2021-05-07 08:55:17 +08:00
#dns_resolver_valid: 30 # if given, override the TTL of the valid records. The unit is second.
2020-08-18 20:18:55 +08:00
resolver_timeout : 5 # resolver timeout
2021-02-20 15:38:45 +08:00
enable_resolv_search_opt : true # enable search option in resolv.conf
2020-08-18 20:18:55 +08:00
ssl :
2020-12-11 17:44:41 +08:00
enable : true
2020-08-18 20:18:55 +08:00
enable_http2 : true
listen_port : 9443
2021-05-07 08:55:17 +08:00
#ssl_trusted_certificate: /path/to/ca-cert # Specifies a file path with trusted CA certificates in the PEM format
2020-10-28 06:49:20 +08:00
# used to verify the certificate when APISIX needs to do SSL/TLS handshaking
# with external services (e.g. etcd)
2021-07-13 14:49:30 +08:00
ssl_protocols : TLSv1.2 TLSv1.3
ssl_ciphers : ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
2020-11-09 22:44:26 +08:00
ssl_session_tickets : false # disable ssl_session_tickets by default for 'ssl_session_tickets' would make Perfect Forward Secrecy useless.
# ref: https://github.com/mozilla/server-side-tls/issues/135
2021-07-13 14:49:30 +08:00
key_encrypt_salt : edd1c9f0985e76a2 # If not set, will save origin ssl key into etcd.
2020-08-18 20:18:55 +08:00
# If set this, must be a string of length 16. And it will encrypt ssl key with AES-128-CBC
# !!! So do not change it after saving your ssl, it can't decrypt the ssl keys have be saved if you change !!
2020-12-18 15:05:09 +08:00
enable_control : true
2021-05-07 08:55:17 +08:00
#control:
2021-07-13 14:49:30 +08:00
# ip: 127.0.0.1
2021-05-07 08:55:17 +08:00
# port: 9090
2021-03-12 14:53:58 +08:00
disable_sync_configuration_during_start : false # safe exit. Remove this once the feature is stable
2020-12-10 15:51:00 +08:00
2020-12-13 00:04:48 +08:00
nginx_config : # config for render the template to generate nginx.conf
2021-07-13 14:49:30 +08:00
#user: root # specifies the execution user of the worker process.
2021-06-06 13:55:37 +08:00
# the "user" directive makes sense only if the master process runs with super-user privileges.
# if you're not root user,the default is current user.
2021-07-13 14:49:30 +08:00
error_log : logs/error.log
error_log_level : warn # warn,error
2021-06-16 17:19:50 +08:00
worker_processes : auto # if you want use multiple cores in container, you can inject the number of cpu as environment variable "APISIX_WORKER_PROCESSES"
2020-12-13 00:04:48 +08:00
enable_cpu_affinity : true # enable cpu affinity, this is just work well only on physical machine
2020-08-18 20:18:55 +08:00
worker_rlimit_nofile : 20480 # the number of files a worker process can open, should be larger than worker_connections
2020-12-18 08:29:17 +08:00
worker_shutdown_timeout : 240s # timeout for a graceful shutdown of worker processes
2020-08-18 20:18:55 +08:00
event :
worker_connections : 10620
2021-05-07 08:55:17 +08:00
#envs: # allow to get a list of environment variables
2020-09-14 18:12:29 +08:00
# - TEST_ENV
2020-11-25 19:23:31 +08:00
2021-07-13 10:02:34 +08:00
stream :
lua_shared_dict :
lrucache-lock-stream : 10m
2021-07-13 13:17:52 +08:00
plugin-limit-conn-stream : 10m
2021-07-13 10:02:34 +08:00
2020-11-25 19:23:31 +08:00
# As user can add arbitrary configurations in the snippet,
# it is user's responsibility to check the configurations
# don't conflict with APISIX.
main_configuration_snippet : |
# Add custom Nginx main configuration to nginx.conf.
# The configuration should be well indented!
http_configuration_snippet : |
# Add custom Nginx http configuration to nginx.conf.
# The configuration should be well indented!
http_server_configuration_snippet : |
# Add custom Nginx http server configuration to nginx.conf.
# The configuration should be well indented!
http_admin_configuration_snippet : |
# Add custom Nginx admin server configuration to nginx.conf.
# The configuration should be well indented!
2021-01-07 19:21:02 +08:00
http_end_configuration_snippet : |
# Add custom Nginx http end configuration to nginx.conf.
# The configuration should be well indented!
2020-11-25 19:23:31 +08:00
stream_configuration_snippet : |
# Add custom Nginx stream configuration to nginx.conf.
# The configuration should be well indented!
2020-08-18 20:18:55 +08:00
http :
2020-11-25 13:10:08 +08:00
enable_access_log : true # enable access log or not, default true
2021-07-13 14:49:30 +08:00
access_log : logs/access.log
2020-11-25 10:05:22 +08:00
access_log_format : "$remote_addr - $remote_user [$time_local] $http_host \"$request\" $status $body_bytes_sent $request_time \"$http_referer\" \"$http_user_agent\" $upstream_addr $upstream_status $upstream_response_time \"$upstream_scheme://$upstream_host$upstream_uri\""
2020-10-30 16:07:24 +08:00
access_log_format_escape : default # allows setting json or default characters escaping in variables
2020-08-18 20:18:55 +08:00
keepalive_timeout : 60s # timeout during which a keep-alive client connection will stay open on the server side.
client_header_timeout : 60s # timeout for reading client request header, then 408 (Request Time-out) error is returned to the client
client_body_timeout : 60s # timeout for reading client request body, then 408 (Request Time-out) error is returned to the client
2020-09-15 21:58:30 +08:00
client_max_body_size : 0 # The maximum allowed size of the client request body.
# If exceeded, the 413 (Request Entity Too Large) error is returned to the client.
# Note that unlike Nginx, we don't limit the body size by default.
2020-08-18 20:18:55 +08:00
send_timeout : 10s # timeout for transmitting a response to the client.then the connection is closed
underscores_in_headers : "on" # default enables the use of underscores in client request header fields
2021-07-13 14:49:30 +08:00
real_ip_header : X-Real-IP # http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header
2021-05-31 08:54:42 +08:00
real_ip_recursive : "off" # http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive
2020-08-18 20:18:55 +08:00
real_ip_from : # http://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from
- 127.0 .0 .1
2021-07-13 14:49:30 +08:00
- "unix:"
2021-05-07 08:55:17 +08:00
#lua_shared_dicts: # add custom shared cache to nginx.conf
2020-12-18 08:29:17 +08:00
# ipc_shared_dict: 100m # custom shared cache, format: `cache-key: cache-size`
2020-08-18 20:18:55 +08:00
2021-01-26 23:36:12 +08:00
# Enables or disables passing of the server name through TLS Server Name Indication extension (SNI, RFC 6066)
# when establishing a connection with the proxied HTTPS server.
proxy_ssl_server_name : true
2021-05-18 14:28:30 +08:00
upstream :
keepalive : 320 # Sets the maximum number of idle keepalive connections to upstream servers that are preserved in the cache of each worker process.
# When this number is exceeded, the least recently used connections are closed.
keepalive_requests : 1000 # Sets the maximum number of requests that can be served through one keepalive connection.
# After the maximum number of requests is made, the connection is closed.
keepalive_timeout : 60s # Sets a timeout during which an idle keepalive connection to an upstream server will stay open.
2021-05-28 18:07:30 +08:00
charset : utf-8 # Adds the specified charset to the "Content-Type" response header field, see
# http://nginx.org/en/docs/http/ngx_http_charset_module.html#charset
2021-05-31 19:06:39 +08:00
variables_hash_max_size : 2048 # Sets the maximum size of the variables hash table.
2021-01-26 23:36:12 +08:00
2021-07-13 10:02:34 +08:00
lua_shared_dict :
internal-status : 10m
plugin-limit-req : 10m
plugin-limit-count : 10m
prometheus-metrics : 10m
plugin-limit-conn : 10m
upstream-healthcheck : 10m
worker-events : 10m
lrucache-lock : 10m
balancer-ewma : 10m
balancer-ewma-locks : 10m
balancer-ewma-last-touched-at : 10m
plugin-limit-count-redis-cluster-slot-lock : 1m
tracing_buffer : 10m
plugin-api-breaker : 10m
etcd-cluster-health-check : 10m
discovery : 1m
jwks : 1m
introspection : 10m
access-tokens : 1m
2020-08-18 20:18:55 +08:00
etcd :
host : # it's possible to define multiple etcd hosts addresses of the same etcd cluster.
2021-07-13 14:49:30 +08:00
- http://127.0.0.1:2379 # multiple etcd address, if your etcd cluster enables TLS, please use https scheme,
# e.g. https://127.0.0.1:2379.
prefix : /apisix # apisix configurations prefix
2020-08-18 20:18:55 +08:00
timeout : 30 # 30 seconds
2021-05-07 08:55:17 +08:00
#resync_delay: 5 # when sync failed and a rest is needed, resync after the configured seconds plus 50% random jitter
2021-06-30 21:16:03 +08:00
#health_check_timeout: 10 # etcd retry the unhealthy nodes after the configured seconds
2021-05-07 08:55:17 +08:00
#user: root # root username for etcd
#password: 5tHkHhYkjr6cQY # root password for etcd
2020-11-03 13:53:39 +08:00
tls :
2021-03-23 20:03:21 +08:00
# To enable etcd client certificate you need to build APISIX-Openresty, see
# http://apisix.apache.org/docs/apisix/how-to-build#6-build-openresty-for-apisix
2021-05-07 08:55:17 +08:00
#cert: /path/to/cert # path of certificate used by the etcd client
#key: /path/to/key # path of key used by the etcd client
2021-03-23 20:03:21 +08:00
2020-12-18 08:29:17 +08:00
verify : true # whether to verify the etcd endpoint certificate when setup a TLS connection to etcd,
2020-11-03 13:53:39 +08:00
# the default value is true, e.g. the certificate will be verified strictly.
2020-10-30 20:34:10 +08:00
2021-05-07 08:55:17 +08:00
#discovery: # service discovery center
# dns:
2021-07-12 10:34:53 +08:00
# servers:
2021-07-13 14:49:30 +08:00
# - 127.0.0.1:8600 # use the real address of your dns server
2021-05-07 08:55:17 +08:00
# eureka:
# host: # it's possible to define multiple eureka hosts addresses of the same eureka cluster.
2021-07-13 14:49:30 +08:00
# - http://127.0.0.1:8761
# prefix: /eureka/
2021-05-07 08:55:17 +08:00
# fetch_interval: 30 # default 30s
# weight: 100 # default weight for node
# timeout:
# connect: 2000 # default 2000ms
# send: 2000 # default 2000ms
# read: 5000 # default 5000ms
2020-08-18 20:18:55 +08:00
2020-12-10 15:51:00 +08:00
graphql :
2020-12-13 00:04:48 +08:00
max_size : 1048576 # the maximum size limitation of graphql in bytes, default 1MiB
2020-12-10 15:51:00 +08:00
2021-05-07 08:55:17 +08:00
#ext-plugin:
#cmd: ["ls", "-l"]
2021-05-04 10:41:08 +08:00
2021-05-24 17:41:50 +08:00
plugins : # plugin list (sorted by priority)
2021-06-16 17:25:50 +08:00
- client-control # priority : 22000
2021-05-24 17:41:50 +08:00
- ext-plugin-pre-req # priority : 12000
- zipkin # priority : 11011
- request-id # priority : 11010
- fault-injection # priority : 11000
- serverless-pre-function # priority : 10000
- batch-requests # priority : 4010
- cors # priority : 4000
- ip-restriction # priority : 3000
- referer-restriction # priority : 2990
- uri-blocker # priority : 2900
- request-validation # priority : 2800
- openid-connect # priority : 2599
- wolf-rbac # priority : 2555
- hmac-auth # priority : 2530
- basic-auth # priority : 2520
- jwt-auth # priority : 2510
- key-auth # priority : 2500
- consumer-restriction # priority : 2400
- authz-keycloak # priority : 2000
#- error-log-logger # priority: 1091
- proxy-mirror # priority : 1010
- proxy-cache # priority : 1009
- proxy-rewrite # priority : 1008
- api-breaker # priority : 1005
- limit-conn # priority : 1003
- limit-count # priority : 1002
- limit-req # priority : 1001
#- node-status # priority: 1000
- server-info # priority : 990
- traffic-split # priority : 966
- redirect # priority : 900
- response-rewrite # priority : 899
#- dubbo-proxy # priority: 507
- grpc-transcode # priority : 506
- prometheus # priority : 500
- echo # priority : 412
- http-logger # priority : 410
- sls-logger # priority : 406
- tcp-logger # priority : 405
- kafka-logger # priority : 403
- syslog # priority : 401
- udp-logger # priority : 400
#- log-rotate # priority: 100
# <- recommend to use priority (0, 100) for your custom plugins
- example-plugin # priority : 0
#- skywalking # priority: -1100
- serverless-post-function # priority : -2000
- ext-plugin-post-req # priority : -3000
2020-08-18 20:18:55 +08:00
2021-05-28 19:47:25 +08:00
stream_plugins : # sorted by priority
2021-07-13 13:17:52 +08:00
- limit-conn # priority : 1003
2021-05-28 19:47:25 +08:00
- mqtt-proxy # priority : 1000
# <- recommend to use priority (0, 100) for your custom plugins
2020-08-26 16:40:36 +08:00
plugin_attr :
log-rotate :
interval: 3600 # rotate interval (unit : second)
max_kept : 168 # max number of log files will be kept
2020-10-29 15:29:52 +08:00
skywalking :
service_name : APISIX
2021-07-13 14:49:30 +08:00
service_instance_name : APISIX Instance Name
2020-10-29 15:29:52 +08:00
endpoint_addr : http://127.0.0.1:12800
2020-11-30 14:35:06 +08:00
prometheus :
export_uri : /apisix/prometheus/metrics
2021-04-07 14:40:28 +08:00
enable_export_server : true
export_addr :
2021-07-13 14:49:30 +08:00
ip : 127.0 .0 .1
2021-04-07 14:40:28 +08:00
port : 9091
2020-12-09 10:07:57 +08:00
server-info :
2020-12-18 08:29:17 +08:00
report_interval: 60 # server info report interval (unit : second)
report_ttl: 3600 # live time for server info in etcd (unit : second)
2021-01-20 09:47:09 +08:00
dubbo-proxy :
upstream_multiplex_count : 32