ccaf49a00c
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
405 lines
7.7 KiB
ReStructuredText
405 lines
7.7 KiB
ReStructuredText
.. _common_middleware:
|
|
|
|
**********
|
|
Middleware
|
|
**********
|
|
|
|
.. _account-quotas:
|
|
|
|
Account Quotas
|
|
==============
|
|
|
|
.. automodule:: swift.common.middleware.account_quotas
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _s3api:
|
|
|
|
AWS S3 Api
|
|
==========
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3api
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3token
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3request
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.s3response
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.exception
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.etree
|
|
:members: _Element
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.utils
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.subresource
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.acl_handlers
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.acl_utils
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.base
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.service
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.bucket
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.obj
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.acl
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.s3_acl
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.multi_upload
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.multi_delete
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.versioning
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.location
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.s3api.controllers.logging
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Backend Ratelimit
|
|
=================
|
|
|
|
.. automodule:: swift.common.middleware.backend_ratelimit
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _bulk:
|
|
|
|
Bulk Operations (Delete and Archive Auto Extraction)
|
|
====================================================
|
|
|
|
.. automodule:: swift.common.middleware.bulk
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _catch_errors:
|
|
|
|
CatchErrors
|
|
=============
|
|
|
|
.. automodule:: swift.common.middleware.catch_errors
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
CNAME Lookup
|
|
============
|
|
|
|
.. automodule:: swift.common.middleware.cname_lookup
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _container-quotas:
|
|
|
|
Container Quotas
|
|
================
|
|
|
|
.. automodule:: swift.common.middleware.container_quotas
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _container-sync:
|
|
|
|
Container Sync Middleware
|
|
=========================
|
|
|
|
.. automodule:: swift.common.middleware.container_sync
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Cross Domain Policies
|
|
=====================
|
|
|
|
.. automodule:: swift.common.middleware.crossdomain
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _discoverability:
|
|
|
|
Discoverability
|
|
===============
|
|
|
|
Swift will by default provide clients with an interface providing details
|
|
about the installation. Unless disabled (i.e ``expose_info=false`` in
|
|
:ref:`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
|
|
============
|
|
|
|
.. automodule:: swift.common.middleware.domain_remap
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
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 :ref:`dlo-doc` further details.
|
|
|
|
.. _encryption:
|
|
|
|
Encryption
|
|
==========
|
|
|
|
Encryption middleware should be deployed in conjunction with the
|
|
:ref:`keymaster` middleware.
|
|
|
|
.. automodule:: swift.common.middleware.crypto
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.crypto.encrypter
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. automodule:: swift.common.middleware.crypto.decrypter
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _etag_quoter:
|
|
|
|
Etag Quoter
|
|
===========
|
|
|
|
.. automodule:: swift.common.middleware.etag_quoter
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _formpost:
|
|
|
|
FormPost
|
|
========
|
|
|
|
.. automodule:: swift.common.middleware.formpost
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _gatekeeper:
|
|
|
|
GateKeeper
|
|
==========
|
|
|
|
.. automodule:: swift.common.middleware.gatekeeper
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _healthcheck:
|
|
|
|
Healthcheck
|
|
===========
|
|
|
|
.. automodule:: swift.common.middleware.healthcheck
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _keymaster:
|
|
|
|
Keymaster
|
|
=========
|
|
|
|
Keymaster middleware should be deployed in conjunction with the
|
|
:ref:`encryption` middleware.
|
|
|
|
.. automodule:: swift.common.middleware.crypto.keymaster
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _keystoneauth:
|
|
|
|
KeystoneAuth
|
|
============
|
|
|
|
.. automodule:: swift.common.middleware.keystoneauth
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _list_endpoints:
|
|
|
|
List Endpoints
|
|
==============
|
|
|
|
.. automodule:: swift.common.middleware.list_endpoints
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Memcache
|
|
========
|
|
|
|
.. automodule:: swift.common.middleware.memcache
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Name Check (Forbidden Character Filter)
|
|
=======================================
|
|
|
|
.. automodule:: swift.common.middleware.name_check
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _object_versioning:
|
|
|
|
Object Versioning
|
|
=================
|
|
|
|
.. automodule:: swift.common.middleware.versioned_writes.object_versioning
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Proxy Logging
|
|
=============
|
|
|
|
.. automodule:: swift.common.middleware.proxy_logging
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Ratelimit
|
|
=========
|
|
|
|
.. automodule:: swift.common.middleware.ratelimit
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _read_only:
|
|
|
|
Read Only
|
|
=========
|
|
|
|
.. automodule:: swift.common.middleware.read_only
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _recon:
|
|
|
|
Recon
|
|
=====
|
|
|
|
.. automodule:: swift.common.middleware.recon
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _copy:
|
|
|
|
Server Side Copy
|
|
================
|
|
|
|
.. automodule:: swift.common.middleware.copy
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
Static Large Objects
|
|
====================
|
|
|
|
Please see
|
|
the SLO docs for :ref:`slo-doc` further details.
|
|
|
|
|
|
.. _staticweb:
|
|
|
|
StaticWeb
|
|
=========
|
|
|
|
.. automodule:: swift.common.middleware.staticweb
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _symlink:
|
|
|
|
Symlink
|
|
=======
|
|
|
|
.. automodule:: swift.common.middleware.symlink
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _common_tempauth:
|
|
|
|
TempAuth
|
|
========
|
|
|
|
.. automodule:: swift.common.middleware.tempauth
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _tempurl:
|
|
|
|
TempURL
|
|
=======
|
|
|
|
.. automodule:: swift.common.middleware.tempurl
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
.. _versioned_writes:
|
|
|
|
Versioned Writes
|
|
=================
|
|
|
|
.. automodule:: swift.common.middleware.versioned_writes.legacy
|
|
:members:
|
|
:show-inheritance:
|
|
|
|
XProfile
|
|
==============
|
|
|
|
.. automodule:: swift.common.middleware.xprofile
|
|
:members:
|
|
:show-inheritance:
|