Couper supports merging of blocks and attributes from multiple configuration files (see Global Options of Command Line Interface).
When merging, all attributes (except environment_variables
in the defaults
block)
replace existing attributes with the same name, if any, otherwise they are added.
Blocks that cannot have labels (eg. cors
, files
etc.) replace existing blocks
with the same name, if any, otherwise they are added.
Blocks with optional labels (eg. server
, api
, spa
, files
etc.) are merged recursively with
blocks with the same label (blocks without a label are merged with blocks with the
same name and no label in each context), if any, otherwise they are added. Only one
unlabeled block of the same type is allowed in each context (eg. api
blocks in
a server
block).
Blocks with required label (eg. endpoint
) replace existing blocks with the same
name and label in each context, if any, otherwise they are added.
Blocks with (optional) multiple labels (eg. error_handler
) replace existing blocks
with identical labels, if any, otherwise they are added.
Currently, here is no way to remove an attribute or a block from the configuration.
- When
server
blocks are merged:- All attributes replace existing attributes with the same name, if any, otherwise they are added.
- The
cors
blocks replace existing blocks with the same name, if any, otherwise, they are added. - All
endpoint
blocks replace existing blocks with the same label, if any, otherwise they are added. - When
spa
orfiles
blocks are merged:- All attributes replace existing attributes with the same name, if any, otherwise they are added.
- The
cors
block replaces existingcors
block, if any, otherwise a newcors
block is added.
- When
api
blocks are merged:- All attributes replace existing attributes with the same name, if any, otherwise they are added.
- The
cors
block replaces existingcors
block, if any, otherwise a newcors
block is added. - All
endpoint
blocks replace existing blocks with the same label, if any, otherwise they are added. - All
error_handler
blocks replace existing blocks with identical labels, if any, otherwise they are added.
Note: An error_handler
block cannot be replaced in or added to an endpoint
block. Therefore, the endpoint
block must be completely replaced.
- The
definitions
blocks are merged recursively, if any, otherwise a newdefinitions
block is added.- All blocks inside a
definitions
block replace existing blocks with the same name and label.
- All blocks inside a
- The
defaults
blocks are merged recursively, if any, otherwise a newdefaults
block is added.- All attributes inside a
defaults
block (exceptenvironment_variables
) replace existing attributes with the same name, if any, otherwise they are added. - Single values of an
environment_variables
attribute replace existing values with the same key, if any, otherwise they are added.
- All attributes inside a
- The
settings
blocks are merged recursively, if any, otherwise a newsettings
block is added.- All attributes inside a
settings
block replace existing attributes with the same name, if any, otherwise they are added.
- All attributes inside a