## Router rules and fault injection rules are moved to router.yaml
#plugin:
#  destinationResolver:
#    http: host # how to turn host to destination name. default to service name，

admin: #admin API
  goRuntimeMetrics : true # enable metrics
  enable: true

## enable pprof to profile mesher runtime
#pprof:
#  enable: false

#mesher:
#  ingress:
#    type: servicecomb
#    rule:
#      http: |
#        - host: example.com
#          limit: 30
#          apiPath: /some/api
#          service:
#            name: example
#            redirectPath: /another/api
#            port:
#              name: http-legacy
#              value: 8080
#        - apiPath: /sayerror/api
#          service:
#            name: Server
#            redirectPath: /sayerror
#            port:
#              name: http
#              value: 8080
#        - apiPath: /some/api
#          service:
#            name: Server
#            port:
#              name: http
#              value: 8080