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