---
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
```