trusty (5) proxy-server.conf.5.gz

Provided by: swift-proxy_1.13.1-0ubuntu1.5_all bug

NAME

       proxy-server.conf - configuration file for the openstack-swift proxy server

SYNOPSIS

       proxy-server.conf

DESCRIPTION

       This is the configuration file used by the proxy server and other proxy middlewares.

       The  configuration  file  follows the python-pastedeploy syntax. The file is divided into sections, which
       are enclosed by square brackets. Each section will contain a certain number of key/value parameters which
       are described later.

       Any line that begins with a '#' symbol is ignored.

       You    can    find    more    information    about    python-pastedeploy    configuration    format    at
       http://pythonpaste.org/deploy/#config-format

GLOBAL SECTION

       This is indicated by section named [DEFAULT]. Below are the parameters that are  acceptable  within  this
       section.

       bind_ip
              IP  address the proxy server should bind to. The default is 0.0.0.0 which will make it bind to all
              available addresses.

       bind_port
              TCP port the proxy server should bind to. The default is 80.

       backlog
              TCP backlog.  Maximum number of allowed pending connections. The default value is 4096.

       workers
              The number of pre-forked processes that will accept connections.  Zero means no fork.  The default
              is  auto  which  will  make  the  server  try to match the number of effective cpu cores if python
              multiprocessing is available (included with most python distributions >= 2.6) or fallback to  one.
              It's  worth  noting that individual workers will use many eventlet co-routines to service multiple
              concurrent requests.

       max_clients
              Maximum number of clients one worker can process simultaneously (it will actually  accept(2)  N  +
              1).  Setting  this  to  one  (1) will only handle one request at a time, without accepting another
              request concurrently.  The default is 1024.

       user   The system user that the proxy server will run as. The default is swift.

       swift_dir
              Swift configuration directory. The default is /etc/swift.

       cert_file
              Location of the SSL certificate file. The default path is /etc/swift/proxy.crt. This  is  disabled
              by default.

       key_file
              Location  of  the  SSL  certificate  key  file.  The default path is /etc/swift/proxy.key. This is
              disabled by default.

       log_name
              Label used when logging. The default is swift.

       log_facility
              Syslog log facility. The default is LOG_LOCAL0.

       log_level
              Logging level. The default is INFO.

       log_address
              Logging address. The default is /dev/log.

       trans_id_suffix
              This optional suffix (default is empty) that would be appended to the swift transaction id  allows
              one  to easily figure out from which cluster that X-Trans-Id belongs to.  This is very useful when
              one is managing more than one swift cluster.

PIPELINE SECTION

       This is indicated by section name [pipeline:main]. Below are the parameters that  are  acceptable  within
       this section.

       pipeline
              It  is  used  when  you  need  apply  a  number  of  filters.  It is a list of filters ended by an
              application. The normal pipeline is "catch_errors  healthcheck  cache  ratelimit  tempauth  proxy-
              logging proxy-server".

FILTER SECTION

       Any  section  that  has  its  name prefixed by "filter:" indicates a filter section.  Filters are used to
       specify configuration parameters for specific swift middlewares.  Below are  the  filters  available  and
       respective acceptable parameters.

       [filter:healthcheck]

          use    Entry  point  for  paste.deploy  for  the  healthcheck middleware. This is the reference to the
                 installed python egg.  This is normally egg:swift#healthcheck.

          disable_path
                 An optional filesystem path which, if present, will cause the healthcheck URL  to  return  "503
                 Service Unavailable" with a body of "DISABLED BY FILE".

       [filter:tempauth]

          use    Entry  point  for  paste.deploy  for  the  tempauth  middleware.  This  is the reference to the
                 installed python egg.  This is normally egg:swift#tempauth.

          set log_name
                 Label used when logging. The default is tempauth.

          set log_facility
                 Syslog log facility. The default is LOG_LOCAL0.

          set log_level
                 Logging level. The default is INFO.

          set log_address
                 Logging address. The default is /dev/log.

          set log_headers
                 Enables the ability to log request headers. The default is False.

          reseller_prefix
                 The reseller prefix will verify a token begins with  this  prefix  before  even  attempting  to
                 validate  it.  Also,  with  authorization, only Swift storage accounts with this prefix will be
                 authorized by this middleware. Useful if multiple  auth  systems  are  in  use  for  one  Swift
                 cluster. The default is AUTH.

          auth_prefix
                 The  auth  prefix  will  cause  requests  beginning  with  this prefix to be routed to the auth
                 subsystem, for granting tokens, etc. The default is /auth/.

          token_life
                 This is the time in seconds before the token expires. The default is 86400.

          user_<account>_<user>
                 Lastly,  you  need  to  list  all  the  accounts/users  you   want   here.   The   format   is:
                 user_<account>_<user> = <key> [group] [group] [...] [storage_url]

                 There  are  special groups of: .reseller_admin who can do anything to any account for this auth
                 and also .admin who can do anything within the account.

                 If neither of these groups are specified, the user can only access containers  that  have  been
                 explicitly  allowed for them by a .admin or .reseller_admin.  The trailing optional storage_url
                 allows you to specify an alternate url to hand back to the user  upon  authentication.  If  not
                 specified,  this defaults to http[s]://<ip>:<port>/v1/<reseller_prefix>_<account> where http or
                 https depends on whether cert_file is specified in the [DEFAULT] section, <ip> and  <port>  are
                 based  on  the  [DEFAULT] section's bind_ip and bind_port (falling back to 127.0.0.1 and 8080),
                 <reseller_prefix> is from this section, and <account> is from the user_<account>_<user> name.

                 Here are example entries, required for running the tests:

                 user_admin_admin = admin .admin .reseller_admin
                 user_test_tester = testing .admin
                 user_test2_tester2 = testing2 .admin
                 user_test_tester3 = testing3

       [filter:cache]

       Caching middleware that manages caching in swift.

          use    Entry point for paste.deploy for  the  memcache  middleware.  This  is  the  reference  to  the
                 installed python egg.  This is normally egg:swift#memcache.

          set log_name
                 Label used when logging. The default is memcache.

          set log_facility
                 Syslog log facility. The default is LOG_LOCAL0.

          set log_level
                 Logging level. The default is INFO.

          set log_address
                 Logging address. The default is /dev/log.

          set log_headers
                 Enables the ability to log request headers. The default is False.

          memcache_servers
                 If  not  set  in  the  configuration  file,  the  value  for memcache_servers will be read from
                 /etc/swift/memcache.conf (see memcache.conf-sample) or lacking that file, it  will  default  to
                 127.0.0.1:11211.   You   can   specify   multiple   servers   separated  with  commas,  as  in:
                 10.1.2.3:11211,10.1.2.4:11211.

          memcache_serialization_support
                 This sets how memcache values are serialized and deserialized:

                 0 = older, insecure pickle serialization
                 1 = json serialization but pickles can still be read (still insecure)
                 2 = json serialization only (secure and the default)

                 To avoid an instant full cache flush, existing installations should upgrade with 0, then set to
                 1  and  reload, then after some time (24 hours) set to 2 and reload. In the future, the ability
                 to use pickle serialization will be removed.

                 If not set in the configuration file, the value for memcache_serialization_support will be read
                 from  /etc/swift/memcache.conf  if it exists (see memcache.conf-sample). Otherwise, the default
                 value as indicated above will be used.

       [filter:ratelimit]

       Rate limits requests on both an Account and Container level.  Limits are configurable.

          use    Entry point for paste.deploy for the  ratelimit  middleware.  This  is  the  reference  to  the
                 installed python egg.  This is normally egg:swift#ratelimit.
          set log_name
                 Label used when logging. The default is ratelimit.
          set log_facility
                 Syslog log facility. The default is LOG_LOCAL0.
          set log_level
                 Logging level. The default is INFO.
          set log_address
                 Logging address. The default is /dev/log.
          set log_headers
                 Enables the ability to log request headers. The default is False.
          clock_accuracy
                 This  should represent how accurate the proxy servers' system clocks are with each other.  1000
                 means that all the proxies' clock  are  accurate  to  each  other  within  1  millisecond.   No
                 ratelimit should be higher than the clock accuracy. The default is 1000.
          max_sleep_time_seconds
                 App  will  immediately return a 498 response if the necessary sleep time ever exceeds the given
                 max_sleep_time_seconds. The default is 60 seconds.
          log_sleep_time_seconds
                 To allow visibility into rate limiting set this value > 0  and  all  sleeps  greater  than  the
                 number will be logged. If set to 0 means disabled. The default is 0.
          rate_buffer_seconds
                 Number of seconds the rate counter can drop and be allowed to catch up (at a faster than listed
                 rate). A larger number will result in larger spikes in rate but better  average  accuracy.  The
                 default is 5.
          account_ratelimit
                 If  set,  will  limit  PUT  and  DELETE  requests to /account_name/container_name. Number is in
                 requests per second. If set to 0 means disabled. The default is 0.
          account_whitelist
                 Comma separated lists of account names that will not be rate limited. The default is ''.
          account_blacklist
                 Comma separated lists of account names that will not be allowed. Returns a 497  response.   The
                 default is ''.
          container_ratelimit_size
                 When  set with container_limit_x = r: for containers of size x, limit requests per second to r.
                 Will limit PUT, DELETE, and POST requests to /a/c/o. The default is ''.

       [filter:domain_remap]

       Middleware that translates container and account parts of a domain to  path  parameters  that  the  proxy
       server      understands.      The      container.account.storageurl/object     gets     translated     to
       container.account.storageurl/path_root/account/container/object                                       and
       account.storageurl/path_root/container/object               gets               translated              to
       account.storageurl/path_root/account/container/object

          use    Entry point for paste.deploy for the domain_remap middleware. This  is  the  reference  to  the
                 installed python egg.  This is normally egg:swift#domain_remap.
          set log_name
                 Label used when logging. The default is domain_remap.
          set log_address
                 Logging address. The default is /dev/log.
          set log_headers
                 Enables the ability to log request headers. The default is False.
          storage_domain
                 The domain to be used by the middleware.
          path_root
                 The path root value for the storage URL. The default is v1.
          reseller_prefixes
                 Browsers  can  convert a host header to lowercase, so check that reseller prefix on the account
                 is the correct case. This is done by comparing the items in the reseller_prefixes config option
                 to  the  found  prefix.  If they match except for case, the item from reseller_prefixes will be
                 used instead of the found  reseller  prefix.  The  reseller_prefixes  list  is  exclusive.   If
                 defined,  any  request  with  an  account  prefix  not  in  that  list  will be ignored by this
                 middleware. Defaults to 'AUTH'.

       [filter:catch_errors]
          use    Entry point for paste.deploy for the catch_errors middleware. This  is  the  reference  to  the
                 installed python egg.  This is normally egg:swift#catch_errors.
          set log_name
                 Label used when logging. The default is catch_errors.
          set log_facility
                 Syslog log facility. The default is LOG_LOCAL0.
          set log_level
                 Logging level. The default is INFO.
          set log_address
                 Logging address. The default is /dev/log.
          set log_headers
                 Enables the ability to log request headers. The default is False.

       [filter:cname_lookup]

       Note: this middleware requires python-dnspython

          use    Entry  point  for  paste.deploy  for  the cname_lookup middleware. This is the reference to the
                 installed python egg.  This is normally egg:swift#cname_lookup.
          set log_name
                 Label used when logging. The default is cname_lookup.
          set log_facility
                 Syslog log facility. The default is LOG_LOCAL0.
          set log_level
                 Logging level. The default is INFO.
          set log_address
                 Logging address. The default is /dev/log.
          set log_headers
                 Enables the ability to log request headers. The default is False.
          storage_domain
                 The domain to be used by the middleware.
          lookup_depth
                 How deep in the CNAME chain to look for something that matches the storage domain.  The default
                 is 1.

       [filter:staticweb]

       Note: Put staticweb just after your auth filter(s) in the pipeline

          use    Entry  point  for  paste.deploy  for  the  staticweb  middleware.  This is the reference to the
                 installed python egg.  This is normally egg:swift#staticweb.
          cache_timeout
                 Seconds to cache container x-container-meta-web-* header values. The default is 300 seconds.
          set log_name
                 Label used when logging. The default is staticweb.
          set log_facility
                 Syslog log facility. The default is LOG_LOCAL0.
          set log_level
                 Logging level. The default is INFO.
          set log_address
                 Logging address. The default is /dev/log.
          set log_headers
                 Enables the ability to log request headers. The default is False.
          set access_log_name
                 Label used when logging. The default is staticweb.
          set access_log_facility
                 Syslog log facility. The default is LOG_LOCAL0.
          set access_log_level
                 Logging level. The default is INFO.

       [filter:tempurl]

       Note: Put tempurl before slo, dlo, and your auth filter(s) in the pipeline

          incoming_remove_headers
                 The headers to remove from incoming requests. Simply a  whitespace  delimited  list  of  header
                 names  and names can optionally end with '*' to indicate a prefix match. incoming_allow_headers
                 is a list of exceptions to these removals.
          incoming_allow_headers
                 The headers allowed as exceptions to incoming_remove_headers.  Simply  a  whitespace  delimited
                 list of header names and names can optionally end with '*' to indicate a prefix match.
          outgoing_remove_headers
                 The  headers  to  remove  from outgoing responses. Simply a whitespace delimited list of header
                 names and names can optionally end with '*' to indicate a prefix match.  outgoing_allow_headers
                 is a list of exceptions to these removals.
          outgoing_allow_headers
                 The  headers  allowed  as  exceptions to outgoing_remove_headers. Simply a whitespace delimited
                 list of header names and names can optionally end with '*' to indicate a prefix match.
          set log_level

       [filter:formpost]

       Note: Put formpost just before your auth filter(s) in the pipeline

          use    Entry point for paste.deploy for  the  formpost  middleware.  This  is  the  reference  to  the
                 installed python egg.  This is normally egg:swift#formpost.

       [filter:name_check]

       Note: Just needs to be placed before the proxy-server in the pipeline.

          use    Entry  point  for  paste.deploy  for  the  name_check  middleware. This is the reference to the
                 installed python egg.  This is normally egg:swift#name_check.
          forbidden_chars
                 Characters that will not be allowed in a name.
          maximum_length
                 Maximum number of characters that can be in the name.
          forbidden_regexp
                 Python regular expressions of substrings that will not be allowed in a name.

       [filter:proxy-logging]

       Logging for the proxy server now lives in this middleware.   If  the  access_*  variables  are  not  set,
       logging directives from [DEFAULT] without "access_" will be used.

          use    Entry  point  for  paste.deploy  for the proxy_logging middleware. This is the reference to the
                 installed python egg.  This is normally egg:swift#proxy_logging.
          access_log_name
                 Label used when logging. The default is proxy-server.
          access_log_facility
                 Syslog log facility. The default is LOG_LOCAL0.
          access_log_level
                 Logging level. The default is INFO.
          access_log_address
                 Default is /dev/log.
          access_log_udp_host
                 If set, access_log_udp_host will override access_log_address.  Default is unset.
          access_log_udp_port
                 Default is 514.
          access_log_statsd_host
                 You can use log_statsd_* from [DEFAULT], or override them here.  Default is localhost.
          access_log_statsd_port
                 Default is 8125.
          access_log_statsd_default_sample_rate
                 Default is 1.
          access_log_statsd_metric_prefix
                 Default is "" (empty-string)
          access_log_headers
                 Default is False.
          log_statsd_valid_http_methods
                 What HTTP methods are allowed for StatsD logging (comma-sep); request methods not in this  list
                 will    have   "BAD_METHOD"   for   the   <verb>   portion   of   the   metric.    Default   is
                 "GET,HEAD,POST,PUT,DELETE,COPY,OPTIONS".

APP SECTION

       This is indicated by section name [app:proxy-server]. Below are the parameters that are acceptable within
       this section.

       use    Entry  point  for paste.deploy for the proxy server. This is the reference to the installed python
              egg.  This is normally egg:swift#proxy.

       set log_name
              Label used when logging. The default is proxy-server.

       set log_facility
              Syslog log facility. The default is LOG_LOCAL0.

       set log_level
              Logging level. The default is INFO.

       set log_address
              Logging address. The default is /dev/log.

       log_handoffs
              Log when handoff locations are used.  Default is True.

       recheck_account_existence
              Cache timeout in seconds to send memcached for account existence. The default is 60 seconds.

       recheck_container_existence
              Cache timeout in seconds to send memcached for container existence. The default is 60 seconds.

       object_chunk_size
              Chunk size to read from object servers. The default is 8192.

       client_chunk_size
              Chunk size to read from clients. The default is 8192.

       node_timeout
              Request timeout to external services. The default is 10 seconds.

       client_timeoutt
              Timeout to read one chunk from a client. The default is 60 seconds.

       conn_timeout
              Connection timeout to external services. The default is 0.5 seconds.

       error_suppression_interval
              Time in seconds that must elapse since the last error for a node to be considered no longer  error
              limited. The default is 60 seconds.

       error_suppression_limit
              Error count to consider a node error limited. The default is 10.

       allow_account_management
              Whether  account  PUTs  and  DELETEs  are  even callable. If set to 'true' any authorized user may
              create and delete accounts; if 'false' no one, even authorized, can. The default is false.

       object_post_as_copy
              Set object_post_as_copy = false to turn on fast posts where only the metadata changes  are  stored
              as  new  and  the original data file is kept in place. This makes for quicker posts; but since the
              container metadata isn't updated in this mode, features like container sync won't be able to  sync
              posts. The default is True.

       account_autocreate
              If  set  to  'true'  authorized  accounts  that  do not yet exist within the Swift cluster will be
              automatically created. The default is set to false.

       rate_limit_after_segment
              Start rate-limiting object segments after the Nth segment of a segmented object.  The  default  is
              10 segments.

       rate_limit_segments_per_sec
              Once  segment  rate-limiting  kicks  in for an object, limit segments served to N per second.  The
              default is 1.

DOCUMENTATION

       More in depth documentation about the swift-proxy-server and also Openstack-Swift as a whole can be found
       at http://swift.openstack.org/admin_guide.html and http://swift.openstack.org

SEE ALSO

       swift-proxy-server(1)