--- slug: /en/operations/settings/composable-protocols sidebar_position: 64 sidebar_label: Composable Protocols --- # Composable Protocols Composable protocols allows more flexible configuration of TCP access to the ClickHouse server. This configuration can co-exist with or replace conventional configuration. ## Composable protocols section is denoted as `protocols` in configuration xml **Example:** ``` xml ``` ## Basic modules define protocol layers **Example:** ``` xml http ``` where: - `plain_http` - name which can be referred by another layer - `type` - denotes protocol handler which will be instantiated to process data, set of protocol handlers is predefined: * `tcp` - native clickhouse protocol handler * `http` - http clickhouse protocol handler * `tls` - TLS encryption layer * `proxy1` - PROXYv1 layer * `mysql` - MySQL compatibility protocol handler * `postgres` - PostgreSQL compatibility protocol handler * `prometheus` - Prometheus protocol handler * `interserver` - clickhouse interserver handler :::note `gRPC` protocol handler is not implemented for `Composable protocols` ::: ## Endpoint (i.e. listening port) is denoted by `` and (optional) `` tags **Example:** ``` xml http 127.0.0.1 8123 ``` If `` is omitted, then `` from root config is used. ## Layers sequence is defined by `` tag, referencing another module **Example:** definition for HTTPS protocol ``` xml http tls plain_http 127.0.0.1 8443 ``` ## Endpoint can be attached to any layer **Example:** definition for HTTP (port 8123) and HTTPS (port 8443) endpoints ``` xml http 127.0.0.1 8123 tls plain_http 127.0.0.1 8443 ``` ## Additional endpoints can be defined by referencing any module and omitting `` tag **Example:** `another_http` endpoint is defined for `plain_http` module ``` xml http 127.0.0.1 8123 tls plain_http 127.0.0.1 8443 plain_http 127.0.0.1 8223 ``` ## Some modules can contain specific for its layer parameters **Example:** for TLS layer private key (`privateKeyFile`) and certificate files (`certificateFile`) can be specified ``` xml http 127.0.0.1 8123 tls plain_http 127.0.0.1 8443 another_server.key another_server.crt ```