swift/doc/source/middleware.rst
Alistair Coles ccaf49a00c Add backend rate limiting middleware
This is a fairly blunt tool: ratelimiting is per device and
applied independently in each worker, but this at least provides
some limit to disk IO on backend servers.

GET, HEAD, PUT, POST, DELETE, UPDATE and REPLICATE methods may be
rate-limited.

Only requests with a path starting '<device>/<partition>', where
<partition> can be cast to an integer, will be rate-limited. Other
requests, including, for example, recon requests with paths such as
'recon/version', are unconditionally forwarded to the next app in the
pipeline.

OPTIONS and SSYNC methods are not rate-limited. Note that
SSYNC sub-requests are passed directly to the object server app
and will not pass though this middleware.

Change-Id: I78b59a081698a6bff0d74cbac7525e28f7b5d7c1
2022-05-20 14:40:00 +01:00

7.7 KiB

Middleware

Account Quotas

swift.common.middleware.account_quotas

AWS S3 Api

swift.common.middleware.s3api.s3api

swift.common.middleware.s3api.s3token

swift.common.middleware.s3api.s3request

swift.common.middleware.s3api.s3response

swift.common.middleware.s3api.exception

swift.common.middleware.s3api.etree

swift.common.middleware.s3api.utils

swift.common.middleware.s3api.subresource

swift.common.middleware.s3api.acl_handlers

swift.common.middleware.s3api.acl_utils

swift.common.middleware.s3api.controllers.base

swift.common.middleware.s3api.controllers.service

swift.common.middleware.s3api.controllers.bucket

swift.common.middleware.s3api.controllers.obj

swift.common.middleware.s3api.controllers.acl

swift.common.middleware.s3api.controllers.s3_acl

swift.common.middleware.s3api.controllers.multi_upload

swift.common.middleware.s3api.controllers.multi_delete

swift.common.middleware.s3api.controllers.versioning

swift.common.middleware.s3api.controllers.location

swift.common.middleware.s3api.controllers.logging

Backend Ratelimit

swift.common.middleware.backend_ratelimit

Bulk Operations (Delete and Archive Auto Extraction)

swift.common.middleware.bulk

CatchErrors

swift.common.middleware.catch_errors

CNAME Lookup

swift.common.middleware.cname_lookup

Container Quotas

swift.common.middleware.container_quotas

Container Sync Middleware

swift.common.middleware.container_sync

Cross Domain Policies

swift.common.middleware.crossdomain

Discoverability

Swift will by default provide clients with an interface providing details about the installation. Unless disabled (i.e expose_info=false in proxy-server-config), a GET request to /info will return configuration data in JSON format. An example response:

{"swift": {"version": "1.11.0"}, "staticweb": {}, "tempurl": {}}

This would signify to the client that swift version 1.11.0 is running and that staticweb and tempurl are available in this installation.

There may be administrator-only information available via /info. To retrieve it, one must use an HMAC-signed request, similar to TempURL. The signature may be produced like so:

swift tempurl GET 3600 /info secret 2>/dev/null | sed s/temp_url/swiftinfo/g

Domain Remap

swift.common.middleware.domain_remap

Dynamic Large Objects

DLO support centers around a user specified filter that matches segments and concatenates them together in object listing order. Please see the DLO docs for dlo-doc further details.

Encryption

Encryption middleware should be deployed in conjunction with the keymaster middleware.

swift.common.middleware.crypto

swift.common.middleware.crypto.encrypter

swift.common.middleware.crypto.decrypter

Etag Quoter

swift.common.middleware.etag_quoter

FormPost

swift.common.middleware.formpost

GateKeeper

swift.common.middleware.gatekeeper

Healthcheck

swift.common.middleware.healthcheck

Keymaster

Keymaster middleware should be deployed in conjunction with the encryption middleware.

swift.common.middleware.crypto.keymaster

KeystoneAuth

swift.common.middleware.keystoneauth

List Endpoints

swift.common.middleware.list_endpoints

Memcache

swift.common.middleware.memcache

Name Check (Forbidden Character Filter)

swift.common.middleware.name_check

Object Versioning

swift.common.middleware.versioned_writes.object_versioning

Proxy Logging

swift.common.middleware.proxy_logging

Ratelimit

swift.common.middleware.ratelimit

Read Only

swift.common.middleware.read_only

Recon

swift.common.middleware.recon

Server Side Copy

swift.common.middleware.copy

Static Large Objects

Please see the SLO docs for slo-doc further details.

StaticWeb

swift.common.middleware.staticweb

swift.common.middleware.symlink

TempAuth

swift.common.middleware.tempauth

TempURL

swift.common.middleware.tempurl

Versioned Writes

swift.common.middleware.versioned_writes.legacy

XProfile

swift.common.middleware.xprofile