Limit client and upstream messagesv3.0+
Limit both client and upstream messages.
You can also use these settings to raise the default limits. Kong Gateway applies the following default limits to incoming messages for all WebSocket services:
- client: 1048576(1MiB)
- upstream: 16777216(16MiB)
Add this section to your kong.yaml configuration file:
_format_version: "3.0"
plugins:
  - name: websocket-size-limit
    config:
      client_max_payload: 4096
      upstream_max_payload: 1048576
Make the following request:
curl -i -X POST http://localhost:8001/plugins/ \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/plugins/ \
    --header "accept: application/json" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer $KONNECT_TOKEN" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
    region: Geographic region where your Kong Konnect is hosted and operates.
- 
    controlPlaneId: Theidof the control plane.
- 
    KONNECT_TOKEN: Your Personal Access Token (PAT) associated with your Konnect account.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongClusterPlugin
metadata:
  name: websocket-size-limit
  namespace: kong
  annotations:
    kubernetes.io/ingress.class: kong
    konghq.com/tags: ''
  labels:
    global: 'true'
config:
  client_max_payload: 4096
  upstream_max_payload: 1048576
plugin: websocket-size-limit
" | kubectl apply -f -
Prerequisite: Configure your Personal Access Token
terraform {
  required_providers {
    konnect = {
      source  = "kong/konnect"
    }
  }
}
provider "konnect" {
  personal_access_token = "$KONNECT_TOKEN"
  server_url            = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_websocket_size_limit" "my_websocket_size_limit" {
  enabled = true
  config = {
    client_max_payload = 4096
    upstream_max_payload = 1048576
  }
  tags = []
  control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
}
Add this section to your kong.yaml configuration file:
_format_version: "3.0"
plugins:
  - name: websocket-size-limit
    service: serviceName|Id
    config:
      client_max_payload: 4096
      upstream_max_payload: 1048576
Make sure to replace the following placeholders with your own values:
- 
serviceName|Id: Theidornameof the service the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/services/{serviceName|Id}/plugins/ \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
serviceName|Id: Theidornameof the service the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/services/{serviceId}/plugins/ \
    --header "accept: application/json" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer $KONNECT_TOKEN" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
    region: Geographic region where your Kong Konnect is hosted and operates.
- 
    controlPlaneId: Theidof the control plane.
- 
    KONNECT_TOKEN: Your Personal Access Token (PAT) associated with your Konnect account.
- 
    serviceId: Theidof the service the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: websocket-size-limit
  namespace: kong
  annotations:
    kubernetes.io/ingress.class: kong
    konghq.com/tags: ''
config:
  client_max_payload: 4096
  upstream_max_payload: 1048576
plugin: websocket-size-limit
" | kubectl apply -f -
Next, apply the KongPlugin resource by annotating the service resource:
kubectl annotate -n kong service SERVICE_NAME konghq.com/plugins=websocket-size-limit
Prerequisite: Configure your Personal Access Token
terraform {
  required_providers {
    konnect = {
      source  = "kong/konnect"
    }
  }
}
provider "konnect" {
  personal_access_token = "$KONNECT_TOKEN"
  server_url            = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_websocket_size_limit" "my_websocket_size_limit" {
  enabled = true
  config = {
    client_max_payload = 4096
    upstream_max_payload = 1048576
  }
  tags = []
  control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
  service = {
    id = konnect_gateway_service.my_service.id
  }
}
Add this section to your kong.yaml configuration file:
_format_version: "3.0"
plugins:
  - name: websocket-size-limit
    route: routeName|Id
    config:
      client_max_payload: 4096
      upstream_max_payload: 1048576
Make sure to replace the following placeholders with your own values:
- 
routeName|Id: Theidornameof the route the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/routes/{routeName|Id}/plugins/ \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
routeName|Id: Theidornameof the route the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/routes/{routeId}/plugins/ \
    --header "accept: application/json" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer $KONNECT_TOKEN" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
    region: Geographic region where your Kong Konnect is hosted and operates.
- 
    controlPlaneId: Theidof the control plane.
- 
    KONNECT_TOKEN: Your Personal Access Token (PAT) associated with your Konnect account.
- 
    routeId: Theidof the route the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: websocket-size-limit
  namespace: kong
  annotations:
    kubernetes.io/ingress.class: kong
    konghq.com/tags: ''
config:
  client_max_payload: 4096
  upstream_max_payload: 1048576
plugin: websocket-size-limit
" | kubectl apply -f -
Next, apply the KongPlugin resource by annotating the httproute or ingress resource:
kubectl annotate -n kong httproute  konghq.com/plugins=websocket-size-limit
kubectl annotate -n kong ingress  konghq.com/plugins=websocket-size-limit
Prerequisite: Configure your Personal Access Token
terraform {
  required_providers {
    konnect = {
      source  = "kong/konnect"
    }
  }
}
provider "konnect" {
  personal_access_token = "$KONNECT_TOKEN"
  server_url            = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_websocket_size_limit" "my_websocket_size_limit" {
  enabled = true
  config = {
    client_max_payload = 4096
    upstream_max_payload = 1048576
  }
  tags = []
  control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
  route = {
    id = konnect_gateway_route.my_route.id
  }
}
Add this section to your kong.yaml configuration file:
_format_version: "3.0"
plugins:
  - name: websocket-size-limit
    consumer: consumerName|Id
    config:
      client_max_payload: 4096
      upstream_max_payload: 1048576
Make sure to replace the following placeholders with your own values:
- 
consumerName|Id: Theidornameof the consumer the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/consumers/{consumerName|Id}/plugins/ \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
consumerName|Id: Theidornameof the consumer the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/consumers/{consumerId}/plugins/ \
    --header "accept: application/json" \
    --header "Content-Type: application/json" \
    --header "Authorization: Bearer $KONNECT_TOKEN" \
    --data '
    {
      "name": "websocket-size-limit",
      "config": {
        "client_max_payload": 4096,
        "upstream_max_payload": 1048576
      },
      "tags": []
    }
    '
Make sure to replace the following placeholders with your own values:
- 
    region: Geographic region where your Kong Konnect is hosted and operates.
- 
    controlPlaneId: Theidof the control plane.
- 
    KONNECT_TOKEN: Your Personal Access Token (PAT) associated with your Konnect account.
- 
    consumerId: Theidof the consumer the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
  name: websocket-size-limit
  namespace: kong
  annotations:
    kubernetes.io/ingress.class: kong
    konghq.com/tags: ''
config:
  client_max_payload: 4096
  upstream_max_payload: 1048576
plugin: websocket-size-limit
" | kubectl apply -f -
Next, apply the KongPlugin resource by annotating the KongConsumer resource:
kubectl annotate -n kong  CONSUMER_NAME konghq.com/plugins=websocket-size-limit
Prerequisite: Configure your Personal Access Token
terraform {
  required_providers {
    konnect = {
      source  = "kong/konnect"
    }
  }
}
provider "konnect" {
  personal_access_token = "$KONNECT_TOKEN"
  server_url            = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_websocket_size_limit" "my_websocket_size_limit" {
  enabled = true
  config = {
    client_max_payload = 4096
    upstream_max_payload = 1048576
  }
  tags = []
  control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
  consumer = {
    id = konnect_gateway_consumer.my_consumer.id
  }
}
