Skip to content

GatewayConfig

Thiago da Rosa de Bustamante edited this page Mar 27, 2018 · 30 revisions

This is the Gateway config descriptor. It support the following properties:

Property Type Description Required
protocol ProtocolConfig The gateway protocol configuration. true
underProxy boolean If we are behind a reverse proxy (Heroku, Bluemix, AWS if you use an ELB, custom Nginx setup, etc). false
disableCompression boolean By default, all responses are compressed by the gateway. If you want to disable it set this property to true. false
disableApiIdValidation boolean Disable the validation of API Ids. If the id is not validated, the data could not be synchronizable to Leanty dashboard. false
disableStats boolean Disable all stats recording for the gateway. false
logger LoggerConfig Configurations for gateway logger. false
accessLogger AccessLoggerConfig Configurations for gateway access logger. false
statsConfig StatsConfig Configurations for gateway stats. false
monitor MonitorConfig[] Create monitors to actively collect some stats. false
admin AdminConfig If provided, Configure the admin service for the gateway. false
cors CorsConfig Configure default cors support for API requests. It can be configured also in the API configuration. false
timeout string or number Configure a timeout for the gateway http.Server. You can inform the amount of milisencods, or use a human-interval string. Defaults to 'one minute'. false
filter MiddlewareConfig[] An array of installed Filter middlewares to be executed, in order, by the request pipeline. false
serviceDiscovery ServiceDiscoveryConfig[] Configure Service Discovery Providers. false
errorHandler MiddlewareConfig[] An ErrorHandler middleware to be called to handle any error during any request pipeline processing. false
config ApiFeaturesConfig Declare common configurations to be referenced by differente apis. false

Example:

{
    "gateway": {
        "protocol": {
            "http": {
                "listenPort": 8000
            }
        },
        "admin": {
            "protocol": {
                "http": {
                    "listenPort": 8001
                }
            },
            "accessLogger": {
                "msg": "HTTP {{req.method}} - {{res.statusCode}} - {{req.url}} ({{res.responseTime}}ms) ",
                "console": {
                    "timestamp": true,
                    "colorize": true
                }
            },
            "userService": {
                "jwtSecret": "secret"
            }
        },
        "logger": {
            "level": "info",
            "console": {
                "colorize": true
            },
            "file": {
                "timestamp": true,
                "outputDir": "./logs",
                "json": false, 
                "prettyPrint": true 
            }
        },
        "monitor": [
            {
                "name": "cpu",
                "statsConfig": {
                    "granularity": {
                        "duration": "1 minute",
                        "ttl": "2 days"
                    }
                }            
            }
        ],
        "filter": [{
            "name": "ipFilter",
            "options": {
                "blacklist": ["10.100.*.*"]
            }
        }]        
    }
} 

or

gateway:
  protocol:
    http:
      listenPort: 8000
  admin:
    protocol:
      http:
        listenPort: 8001
    accessLogger:
      msg: 'HTTP {{req.method}} - {{res.statusCode}} - {{req.url}} ({{res.responseTime}}ms)'
      console:
        timestamp: true
        colorize: true
    userService:
      jwtSecret: secret
  logger:
    level: info
    console:
      colorize: true
    file:
      timestamp: true
      outputDir: "./logs"
      json: false
      prettyPrint: true
  monitor:
  - name: cpu
    statsConfig:
      granularity:
        duration: 1 minute
        ttl: 2 days
  filter:
    - name: ipFilter 
      options: 
        blacklist: 
          - "10.100.*.*"

ApiFeaturesConfig

Declare common configurations that can be used by different APIs.

The config configuration supports the following properties:

Property Type Description Required
authentication { [index: string]: AuthenticationConfig } Authentication configuration. true
cache { [index: string]: CacheConfig } Cache configuration. true
circuitBreaker { [index: string]: CircuitBreakerConfig } CircuitBreaker configuration. true
cors { [index: string]: CorsConfig } Cors configuration. true
filter { [index: string]: MiddlewareConfig } Filter configuration. true
throttling { [index: string]: ThrottlingConfig } Throttling configuration. true

Example:

gateway:
    config:
        authentication:
            my-basic-validator:
                strategy:
                    id: basic
                    options:
                        verify:
                            name: verifyBasicUser
        cache:
            my-cache:
                client:
                    cacheTime: 1 minute
                    cacheControl: public
                    mustRevalidate: false
                    noTransform: false
                    proxyRevalidate: false
                server:
                    cacheTime: 10 minutes
                    binary: true
                    preserveHeaders: access-control-allow-credentials
        circuitBreaker:
            my-circuit-breaker:
                timeout: 1
                resetTimeout: 3 seconds
                timeWindow: 2 seconds
                maxFailures: 1
                onOpen:
                    name: myOpenHandler
        throttling:
            my-rate-limit:
                timeWindow: one minute
                delay: 1 second
                max: 1
        cors:
            my-cors:
                origin:
                    enableAll: true
        filter:
            my-ip-filter:
                name: ipFilter
                options:
                    blacklist:
                        - "127.0.0.1"
                        - "::1"
                    statusCode: 403
                    message: IP Filtered
Clone this wiki locally