In follow-up to the related change, mention the new cors_expose_headers option (and other proxy-server.conf options) in the CORS doc. Add a test for the cors options being loaded into the proxy server. Improve CORS comments in docs. Change-Id: I647d8f9e9cbd98de05443638628414b1e87d1a76 Related-Change: I5ca90a052f27c98a514a96ee2299bfa1b6d46334
		
			
				
	
	
		
			1120 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			1120 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\"
 | 
						|
.\" Author: Joao Marcelo Martins <marcelo.martins@rackspace.com> or <btorch@gmail.com>
 | 
						|
.\" Copyright (c) 2010-2012 OpenStack Foundation.
 | 
						|
.\"
 | 
						|
.\" Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
.\" you may not use this file except in compliance with the License.
 | 
						|
.\" You may obtain a copy of the License at
 | 
						|
.\"
 | 
						|
.\"    http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
.\"
 | 
						|
.\" Unless required by applicable law or agreed to in writing, software
 | 
						|
.\" distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
.\" WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 | 
						|
.\" implied.
 | 
						|
.\" See the License for the specific language governing permissions and
 | 
						|
.\" limitations under the License.
 | 
						|
.\"
 | 
						|
.TH proxy-server.conf 5 "8/26/2011" "Linux" "OpenStack Swift"
 | 
						|
 | 
						|
.SH NAME
 | 
						|
.LP
 | 
						|
.B proxy-server.conf
 | 
						|
\- configuration file for the OpenStack Swift proxy server
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.SH SYNOPSIS
 | 
						|
.LP
 | 
						|
.B proxy-server.conf
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.SH DESCRIPTION
 | 
						|
.PP
 | 
						|
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
 | 
						|
\fIhttp://pythonpaste.org/deploy/#config-format\fR
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.SH GLOBAL SECTION
 | 
						|
.PD 1
 | 
						|
.RS 0
 | 
						|
This is indicated by section named [DEFAULT]. Below are the parameters that
 | 
						|
are acceptable within this section.
 | 
						|
 | 
						|
.IP "\fBbind_ip\fR"
 | 
						|
IP address the proxy server should bind to. The default is 0.0.0.0 which will make
 | 
						|
it bind to all available addresses.
 | 
						|
.IP "\fBbind_port\fR"
 | 
						|
TCP port the proxy server should bind to. The default is 80.
 | 
						|
.IP "\fBkeep_idle\fR"
 | 
						|
Value to set for socket TCP_KEEPIDLE. The default value is 600.
 | 
						|
.IP "\fBbind_timeout\fR"
 | 
						|
Timeout to bind socket. The default is 30.
 | 
						|
.IP \fBbacklog\fR
 | 
						|
TCP backlog.  Maximum number of allowed pending connections. The default value is 4096.
 | 
						|
.IP \fBadmin_key\fR
 | 
						|
Key to use for admin calls that are HMAC signed.  Default is empty,
 | 
						|
which will disable admin calls to /info.
 | 
						|
.IP \fBdisallowed_sections\fR
 | 
						|
Allows the ability to withhold sections from showing up in the public calls
 | 
						|
to /info.  You can withhold subsections by separating the dict level with a
 | 
						|
".".  The following would cause the sections 'container_quotas' and 'tempurl'
 | 
						|
to not be listed, and the key max_failed_deletes would be removed from
 | 
						|
bulk_delete.  Default value is 'swift.valid_api_versions' which allows all
 | 
						|
registered features to be listed via HTTP GET /info except
 | 
						|
swift.valid_api_versions information
 | 
						|
.IP \fBworkers\fR
 | 
						|
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.
 | 
						|
.IP \fBmax_clients\fR
 | 
						|
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.
 | 
						|
.IP \fBuser\fR
 | 
						|
The system user that the proxy server will run as. The default is swift.
 | 
						|
.IP \fBexpose_info\fR
 | 
						|
Enables exposing configuration settings via HTTP GET /info. The default is true.
 | 
						|
.IP \fBswift_dir\fR
 | 
						|
Swift configuration directory. The default is /etc/swift.
 | 
						|
.IP \fBcert_file\fR
 | 
						|
Location of the SSL certificate file. The default path is /etc/swift/proxy.crt. This is
 | 
						|
disabled by default.
 | 
						|
.IP \fBkey_file\fR
 | 
						|
Location of the SSL certificate key file. The default path is /etc/swift/proxy.key. This is
 | 
						|
disabled by default.
 | 
						|
.IP \fBexpiring_objects_container_divisor\fR
 | 
						|
The default is 86400.
 | 
						|
.IP \fBexpiring_objects_account_name\fR
 | 
						|
The default is 'expiring_objects'.
 | 
						|
.IP \fBlog_name\fR
 | 
						|
Label used when logging. The default is swift.
 | 
						|
.IP \fBlog_facility\fR
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP \fBlog_level\fR
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP \fBlog_address\fR
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP \fBlog_max_line_length\fR
 | 
						|
To cap the length of log lines to the value given. No limit if set to 0, the default.
 | 
						|
.IP \fBlog_headers\fR
 | 
						|
The default is false.
 | 
						|
.IP \fBlog_custom_handlers\fR
 | 
						|
Comma separated list of functions to call to setup custom log handlers.
 | 
						|
functions get passed: conf, name, log_to_console, log_route, fmt, logger,
 | 
						|
adapted_logger. The default is empty.
 | 
						|
.IP \fBlog_udp_host\fR
 | 
						|
If set, log_udp_host will override log_address.
 | 
						|
.IP "\fBlog_udp_port\fR
 | 
						|
UDP log port, the default is 514.
 | 
						|
.IP \fBlog_statsd_host\fR
 | 
						|
StatsD server. IPv4/IPv6 addresses and hostnames are
 | 
						|
supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4
 | 
						|
address will be used.
 | 
						|
.IP \fBlog_statsd_port\fR
 | 
						|
The default is 8125.
 | 
						|
.IP \fBlog_statsd_default_sample_rate\fR
 | 
						|
The default is 1.
 | 
						|
.IP \fBlog_statsd_sample_rate_factor\fR
 | 
						|
The default is 1.
 | 
						|
.IP \fBlog_statsd_metric_prefix\fR
 | 
						|
The default is empty.
 | 
						|
.IP \fBclient_timeout\fR
 | 
						|
Time to wait while receiving each chunk of data from a client or another
 | 
						|
backend node. The default is 60.
 | 
						|
.IP \fBeventlet_debug\fR
 | 
						|
Debug mode for eventlet library. The default is false.
 | 
						|
.IP \fBtrans_id_suffix\fR
 | 
						|
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.
 | 
						|
.IP \fBcors_allow_origin\fR
 | 
						|
List of origin hosts that are allowed for CORS requests in addition to what
 | 
						|
the container has set. Use a comma separated list of full URL (http://foo.bar:1234,https://foo.bar)
 | 
						|
.IP \fBstrict_cors_mode\fR
 | 
						|
If True (default) then CORS requests are only allowed if their Origin header
 | 
						|
matches an allowed origin. Otherwise, any Origin is allowed.
 | 
						|
.IP \fBcors_expose_headers\fR
 | 
						|
Comma separated list of headers to expose through Access-Control-Expose-Headers,
 | 
						|
in addition to the defaults and any headers set in container metadata.
 | 
						|
.IP \fBnice_priority\fR
 | 
						|
Modify scheduling priority of server processes. Niceness values range from -20
 | 
						|
(most favorable to the process) to 19 (least favorable to the process).
 | 
						|
The default does not modify priority.
 | 
						|
.IP \fBionice_class\fR
 | 
						|
Modify I/O scheduling class of server processes. I/O niceness class values
 | 
						|
are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle).
 | 
						|
The default does not modify class and priority.
 | 
						|
Work only with ionice_priority.
 | 
						|
.IP \fBionice_priority\fR
 | 
						|
Modify I/O scheduling priority of server processes. I/O niceness priority
 | 
						|
is a number which goes from 0 to 7. The higher the value, the lower
 | 
						|
the I/O priority of the process. Work only with ionice_class.
 | 
						|
Ignored if IOPRIO_CLASS_IDLE is set.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.SH PIPELINE SECTION
 | 
						|
.PD 1
 | 
						|
.RS 0
 | 
						|
This is indicated by section name [pipeline:main]. Below are the parameters that
 | 
						|
are acceptable within this section.
 | 
						|
 | 
						|
.IP "\fBpipeline\fR"
 | 
						|
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 gatekeeper healthcheck proxy-logging cache container_sync bulk tempurl ratelimit tempauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server".
 | 
						|
 | 
						|
Note: The double proxy-logging in the pipeline is not a mistake. The
 | 
						|
left-most proxy-logging is there to log requests that were handled in
 | 
						|
middleware and never made it through to the right-most middleware (and
 | 
						|
proxy server). Double logging is prevented for normal requests. See
 | 
						|
proxy-logging docs.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.SH FILTER SECTION
 | 
						|
.PD 1
 | 
						|
.RS 0
 | 
						|
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.
 | 
						|
.IP "\fB[filter:healthcheck]\fR"
 | 
						|
.RE
 | 
						|
.RS 3
 | 
						|
.IP "\fBuse\fR"
 | 
						|
Entry point for paste.deploy for the healthcheck middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#healthcheck\fR.
 | 
						|
.IP "\fBdisable_path\fR"
 | 
						|
An optional filesystem path which, if present, will cause the healthcheck
 | 
						|
URL to return "503 Service Unavailable" with a body of "DISABLED BY FILE".
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:tempauth]\fR"
 | 
						|
.RE
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the tempauth middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#tempauth\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is tempauth.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR "
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.IP \fBreseller_prefix\fR
 | 
						|
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.
 | 
						|
.IP \fBauth_prefix\fR
 | 
						|
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/.
 | 
						|
.IP \fBrequire_group\fR
 | 
						|
The require_group parameter names a group that must be presented by
 | 
						|
either X-Auth-Token or X-Service-Token. Usually this parameter is
 | 
						|
used only with multiple reseller prefixes (e.g., SERVICE_require_group=blah).
 | 
						|
By default, no group is needed. Do not use .admin.
 | 
						|
.IP \fBtoken_life\fR
 | 
						|
This is the time in seconds before the token expires. The default is 86400.
 | 
						|
.IP \fBallow_overrides\fR
 | 
						|
This allows middleware higher in the WSGI pipeline to override auth
 | 
						|
processing, useful for middleware such as tempurl and formpost. If you know
 | 
						|
you're not going to use such middleware and you want a bit of extra security,
 | 
						|
you can set this to false. The default is true.
 | 
						|
.IP \fBstorage_url_scheme\fR
 | 
						|
This specifies what scheme to return with storage urls:
 | 
						|
http, https, or default (chooses based on what the server is running as)
 | 
						|
This can be useful with an SSL load balancer in front of a non-SSL server.
 | 
						|
.IP \fBuser_<account>_<user>\fR
 | 
						|
Lastly, you need to list all the accounts/users you want here. The format is:
 | 
						|
user_<account>_<user> = <key> [group] [group] [...] [storage_url]
 | 
						|
or if you want underscores in <account> or <user>, you can base64 encode them
 | 
						|
(with no equal signs) and use this format:
 | 
						|
user64_<account_b64>_<user_b64> = <key> [group] [group] [...] [storage_url]
 | 
						|
 | 
						|
There are special groups of: \fI.reseller_admin\fR who can do anything to any account for this auth
 | 
						|
and also \fI.admin\fR 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 \fI.admin\fR or \fI.reseller_admin\fR.
 | 
						|
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
 | 
						|
\fIhttp[s]://<ip>:<port>/v1/<reseller_prefix>_<account>\fR 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:
 | 
						|
.RE
 | 
						|
 | 
						|
.PD 0
 | 
						|
.RS 10
 | 
						|
.IP "user_admin_admin = admin .admin .reseller_admin"
 | 
						|
.IP "user_test_tester = testing .admin"
 | 
						|
.IP "user_test2_tester2 = testing2 .admin"
 | 
						|
.IP "user_test_tester3 = testing3"
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:authtoken]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
To enable Keystone authentication you need to have the auth token
 | 
						|
middleware first to be configured. Here is an example below, please
 | 
						|
refer to the keystone's documentation for details about the
 | 
						|
different settings.
 | 
						|
 | 
						|
You'll need to have as well the keystoneauth middleware enabled
 | 
						|
and have it in your main pipeline so instead of having tempauth in
 | 
						|
there you can change it to: authtoken keystoneauth
 | 
						|
 | 
						|
The auth credentials ("project_domain_name", "user_domain_name", "username",
 | 
						|
"project_name", "password")  must match the Keystone credentials for the Swift
 | 
						|
service. The example values shown here assume a user named "swift" with admin
 | 
						|
role on a project named "service", both being in the Keystone domain with id
 | 
						|
"default". Refer to the KeystoneMiddleware documentation at
 | 
						|
.BI https://docs.openstack.org/keystonemiddleware/latest/middlewarearchitecture.html#configuration
 | 
						|
for other examples.
 | 
						|
 | 
						|
.PD 0
 | 
						|
.RS 10
 | 
						|
.IP "paste.filter_factory = keystonemiddleware.auth_token:filter_factory"
 | 
						|
.IP "www_authenticate_uri = http://keystonehost:5000"
 | 
						|
.IP "auth_url = http://keystonehost:35357"
 | 
						|
.IP "auth_plugin = password"
 | 
						|
.IP "project_domain_id = default"
 | 
						|
.IP "user_domain_id = default"
 | 
						|
.IP "project_name = service"
 | 
						|
.IP "username = swift"
 | 
						|
.IP "password = password"
 | 
						|
.IP ""
 | 
						|
.IP "# delay_auth_decision defaults to False, but leaving it as false will"
 | 
						|
.IP "# prevent other auth systems, staticweb, tempurl, formpost, and ACLs from"
 | 
						|
.IP "# working. This value must be explicitly set to True."
 | 
						|
.IP "delay_auth_decision = False"
 | 
						|
.IP
 | 
						|
.IP "cache = swift.cache"
 | 
						|
.IP "include_service_catalog = False"
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:keystoneauth]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Keystone authentication middleware.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the keystoneauth middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#keystoneauth\fR.
 | 
						|
.IP \fBreseller_prefix\fR
 | 
						|
The reseller_prefix option lists account namespaces that this middleware is
 | 
						|
responsible for. The prefix is placed before the Keystone project id.
 | 
						|
For example, for project 12345678, and prefix AUTH, the account is
 | 
						|
named AUTH_12345678 (i.e., path is /v1/AUTH_12345678/...).
 | 
						|
Several prefixes are allowed by specifying a comma-separated list
 | 
						|
as in: "reseller_prefix = AUTH, SERVICE". The empty string indicates a
 | 
						|
single blank/empty prefix. If an empty prefix is required in a list of
 | 
						|
prefixes, a value of '' (two single quote characters) indicates a
 | 
						|
blank/empty prefix. Except for the blank/empty prefix, an underscore ('_')
 | 
						|
character is appended to the value unless already present.
 | 
						|
.IP \fBoperator_roles\fR
 | 
						|
The user must have at least one role named by operator_roles on a
 | 
						|
project in order to create, delete and modify containers and objects
 | 
						|
and to set and read privileged headers such as ACLs.
 | 
						|
If there are several reseller prefix items, you can prefix the
 | 
						|
parameter so it applies only to those accounts (for example
 | 
						|
the parameter SERVICE_operator_roles applies to the /v1/SERVICE_<project>
 | 
						|
path). If you omit the prefix, the option applies to all reseller
 | 
						|
prefix items. For the blank/empty prefix, prefix with '' (do not put
 | 
						|
underscore after the two single quote characters).
 | 
						|
.IP \fBreseller_admin_role\fR
 | 
						|
The reseller admin role has the ability to create and delete accounts.
 | 
						|
.IP \fBallow_overrides\fR
 | 
						|
This allows middleware higher in the WSGI pipeline to override auth
 | 
						|
processing, useful for middleware such as tempurl and formpost. If you know
 | 
						|
you're not going to use such middleware and you want a bit of extra security,
 | 
						|
you can set this to false.
 | 
						|
.IP \fBservice_roles\fR
 | 
						|
If the service_roles parameter is present, an X-Service-Token must be
 | 
						|
present in the request that when validated, grants at least one role listed
 | 
						|
in the parameter. The X-Service-Token may be scoped to any project.
 | 
						|
If there are several reseller prefix items, you can prefix the
 | 
						|
parameter so it applies only to those accounts (for example
 | 
						|
the parameter SERVICE_service_roles applies to the /v1/SERVICE_<project>
 | 
						|
path). If you omit the prefix, the option applies to all reseller
 | 
						|
prefix items. For the blank/empty prefix, prefix with '' (do not put
 | 
						|
underscore after the two single quote characters).
 | 
						|
By default, no service_roles are required.
 | 
						|
.IP \fBdefault_domain_id\fR
 | 
						|
For backwards compatibility, keystoneauth will match names in cross-tenant
 | 
						|
access control lists (ACLs) when both the requesting user and the tenant
 | 
						|
are in the default domain i.e the domain to which existing tenants are
 | 
						|
migrated. The default_domain_id value configured here should be the same as
 | 
						|
the value used during migration of tenants to keystone domains.
 | 
						|
.IP \fBallow_names_in_acls\fR
 | 
						|
For a new installation, or an installation in which keystone projects may
 | 
						|
move between domains, you should disable backwards compatible name matching
 | 
						|
in ACLs by setting allow_names_in_acls to false:
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:cache]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Caching middleware that manages caching in swift.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the memcache middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#memcache\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is memcache.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR"
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.IP \fBmemcache_max_connections\fR
 | 
						|
Sets the maximum number of connections to each memcached server per worker.
 | 
						|
.IP \fBmemcache_servers\fR
 | 
						|
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.  (IPv6
 | 
						|
addresses must follow rfc3986 section-3.2.2, i.e. [::1]:11211)
 | 
						|
.IP \fBmemcache_serialization_support\fR
 | 
						|
This sets how memcache values are serialized and deserialized:
 | 
						|
.RE
 | 
						|
 | 
						|
.PD 0
 | 
						|
.RS 10
 | 
						|
.IP "0 = older, insecure pickle serialization"
 | 
						|
.IP "1 = json serialization but pickles can still be read (still insecure)"
 | 
						|
.IP "2 = json serialization only (secure and the default)"
 | 
						|
.RE
 | 
						|
 | 
						|
.RS 10
 | 
						|
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.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:ratelimit]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Rate limits requests on both an Account and Container level.  Limits are configurable.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the ratelimit middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#ratelimit\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is ratelimit.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR "
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.IP \fBclock_accuracy\fR
 | 
						|
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.
 | 
						|
.IP \fBmax_sleep_time_seconds\fR
 | 
						|
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.
 | 
						|
.IP \fBlog_sleep_time_seconds\fR
 | 
						|
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.
 | 
						|
.IP \fBrate_buffer_seconds\fR
 | 
						|
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.
 | 
						|
.IP \fBaccount_ratelimit\fR
 | 
						|
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.
 | 
						|
.IP \fBcontainer_ratelimit_size\fR
 | 
						|
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 ''.
 | 
						|
.IP \fBcontainer_listing_ratelimit_size\fR
 | 
						|
Similarly to the above container-level write limits, the following will limit
 | 
						|
container GET (listing) requests.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:domain_remap]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the domain_remap middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#domain_remap\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is domain_remap.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR "
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.IP \fBstorage_domain\fR
 | 
						|
The domain to be used by the middleware. Multiple domains can be specified separated by a comma.
 | 
						|
.IP \fBpath_root\fR
 | 
						|
The path root value for the storage URL. The default is v1.
 | 
						|
.IP \fBreseller_prefixes\fR
 | 
						|
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. When none match, the default reseller
 | 
						|
prefix is used. When no default reseller prefix is configured, any request with
 | 
						|
an account prefix not in that list will be ignored by this middleware.
 | 
						|
Defaults to 'AUTH'.
 | 
						|
.IP \fBdefault_reseller_prefix\fR
 | 
						|
The default reseller prefix. This is used when none of the configured
 | 
						|
reseller_prefixes match. When not set, no reseller prefix is added.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:catch_errors]\fR"
 | 
						|
.RE
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the catch_errors middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#catch_errors\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is catch_errors.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR "
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR"
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:cname_lookup]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: this middleware requires python-dnspython
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the cname_lookup middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#cname_lookup\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is cname_lookup.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR"
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.IP \fBstorage_domain\fR
 | 
						|
The domain to be used by the middleware.
 | 
						|
.IP \fBlookup_depth\fR
 | 
						|
How deep in the CNAME chain to look for something that matches the storage domain.
 | 
						|
The default is 1.
 | 
						|
.IP \fBnameservers\fR
 | 
						|
Specify the nameservers to use to do the CNAME resolution. If unset, the system
 | 
						|
configuration is used. Multiple nameservers can be specified separated by a comma.
 | 
						|
Default is unset.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:staticweb]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put staticweb just after your auth filter(s) in the pipeline
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the staticweb middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#staticweb\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is staticweb.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR "
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR"
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:tempurl]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put tempurl before slo, dlo, and your auth filter(s) in the pipeline
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the tempurl middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#tempurl\fR.
 | 
						|
.IP \fBmethods\fR
 | 
						|
The methods allowed with Temp URLs. The default is 'GET HEAD PUT POST DELETE'.
 | 
						|
.IP \fBincoming_remove_headers\fR
 | 
						|
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.
 | 
						|
.IP \fBincoming_allow_headers\fR
 | 
						|
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.
 | 
						|
.IP "\fBoutgoing_remove_headers\fR"
 | 
						|
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.
 | 
						|
.IP "\fBoutgoing_allow_headers\fR"
 | 
						|
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.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:formpost]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put formpost just before your auth filter(s) in the pipeline
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the formpost middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#formpost\fR.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:name_check]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Just needs to be placed before the proxy-server in the pipeline.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the name_check middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#name_check\fR.
 | 
						|
.IP \fBforbidden_chars\fR
 | 
						|
Characters that will not be allowed in a name. The default is '"`<>.
 | 
						|
.IP \fBmaximum_length\fR
 | 
						|
Maximum number of characters that can be in the name. The default is 255.
 | 
						|
.IP \fBforbidden_regexp\fR
 | 
						|
Python regular expressions of substrings that will not be allowed in a name. The default is /\./|/\.\./|/\.$|/\.\.$.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:list-endpoints]\fR"
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the list_endpoints middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#list_endpoints\fR.
 | 
						|
.IP \fBlist_endpoints_path\fR
 | 
						|
The default is '/endpoints/'.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:proxy-logging]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the proxy_logging middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#proxy_logging\fR.
 | 
						|
.IP "\fBaccess_log_name\fR"
 | 
						|
Label used when logging. The default is proxy-server.
 | 
						|
.IP "\fBaccess_log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBaccess_log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP \fBaccess_log_address\fR
 | 
						|
Default is /dev/log.
 | 
						|
.IP \fBaccess_log_udp_host\fR
 | 
						|
If set, access_log_udp_host will override access_log_address.  Default is
 | 
						|
unset.
 | 
						|
.IP \fBaccess_log_udp_port\fR
 | 
						|
Default is 514.
 | 
						|
.IP \fBaccess_log_statsd_host\fR
 | 
						|
You can use log_statsd_* from [DEFAULT], or override them here.
 | 
						|
StatsD server. IPv4/IPv6 addresses and hostnames are
 | 
						|
supported. If a hostname resolves to an IPv4 and IPv6 address, the IPv4
 | 
						|
address will be used.
 | 
						|
.IP \fBaccess_log_statsd_port\fR
 | 
						|
Default is 8125.
 | 
						|
.IP \fBaccess_log_statsd_default_sample_rate\fR
 | 
						|
Default is 1.
 | 
						|
.IP \fBaccess_log_statsd_sample_rate_factor\fR
 | 
						|
The default is 1.
 | 
						|
.IP \fBaccess_log_statsd_metric_prefix\fR
 | 
						|
Default is "" (empty-string)
 | 
						|
.IP \fBaccess_log_headers\fR
 | 
						|
Default is False.
 | 
						|
.IP \fBaccess_log_headers_only\fR
 | 
						|
If access_log_headers is True and access_log_headers_only is set only
 | 
						|
these headers are logged. Multiple headers can be defined as comma separated
 | 
						|
list like this: access_log_headers_only = Host, X-Object-Meta-Mtime
 | 
						|
.IP \fBreveal_sensitive_prefix\fR
 | 
						|
By default, the X-Auth-Token is logged. To obscure the value,
 | 
						|
set reveal_sensitive_prefix to the number of characters to log.
 | 
						|
For example, if set to 12, only the first 12 characters of the
 | 
						|
token appear in the log. An unauthorized access of the log file
 | 
						|
won't allow unauthorized usage of the token. However, the first
 | 
						|
12 or so characters is unique enough that you can trace/debug
 | 
						|
token usage. Set to 0 to suppress the token completely (replaced
 | 
						|
by '...' in the log). The default is 16 chars.
 | 
						|
Note: reveal_sensitive_prefix will not affect the value logged with access_log_headers=True.
 | 
						|
.IP \fBlog_statsd_valid_http_methods\fR
 | 
						|
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".
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:bulk]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put before both ratelimit and auth in the pipeline.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the bulk middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#bulk\fR.
 | 
						|
.IP \fBmax_containers_per_extraction\fR
 | 
						|
The default is 10000.
 | 
						|
.IP \fBmax_failed_extractions\fR
 | 
						|
The default is 1000.
 | 
						|
.IP \fBmax_deletes_per_request\fR
 | 
						|
The default is 10000.
 | 
						|
.IP \fBmax_failed_deletes\fR
 | 
						|
The default is 1000.
 | 
						|
 | 
						|
In order to keep a connection active during a potentially long bulk request,
 | 
						|
Swift may return whitespace prepended to the actual response body. This
 | 
						|
whitespace will be yielded no more than every yield_frequency seconds.
 | 
						|
The default is 10.
 | 
						|
.IP \fByield_frequency\fR
 | 
						|
 | 
						|
.IP \fBdelete_container_retry_count\fR
 | 
						|
Note: This parameter is used during a bulk delete of objects and
 | 
						|
their container. This would frequently fail because it is very likely
 | 
						|
that all replicated objects have not been deleted by the time the middleware got a
 | 
						|
successful response. It can be configured the number of retries. And the
 | 
						|
number of seconds to wait between each retry will be 1.5**retry
 | 
						|
The default is 0.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:slo]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put after auth and staticweb in the pipeline.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the slo middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#slo\fR.
 | 
						|
.IP \fBmax_manifest_segments\fR
 | 
						|
The default is 1000.
 | 
						|
.IP \fBmax_manifest_size\fR
 | 
						|
The default is 2097152.
 | 
						|
.IP \fBmin_segment_size\fR
 | 
						|
The default is 1048576
 | 
						|
.IP \fBrate_limit_after_segment\fR
 | 
						|
Start rate-limiting object segments after the Nth segment of a segmented
 | 
						|
object. The default is 10 segments.
 | 
						|
.IP \fBrate_limit_segments_per_sec\fR
 | 
						|
Once segment rate-limiting kicks in for an object, limit segments served to N
 | 
						|
per second. The default is 1.
 | 
						|
.IP \fBmax_get_time\fR
 | 
						|
Time limit on GET requests (seconds). The default is 86400.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:dlo]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put after auth and staticweb in the pipeline.
 | 
						|
If you don't put it in the pipeline, it will be inserted for you.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the dlo middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#dlo\fR.
 | 
						|
.IP \fBrate_limit_after_segment\fR
 | 
						|
Start rate-limiting object segments after the Nth segment of a segmented
 | 
						|
object. The default is 10 segments.
 | 
						|
.IP \fBrate_limit_segments_per_sec\fR
 | 
						|
Once segment rate-limiting kicks in for an object, limit segments served to N
 | 
						|
per second. The default is 1.
 | 
						|
.IP \fBmax_get_time\fR
 | 
						|
Time limit on GET requests (seconds). The default is 86400.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:container-quotas]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put after auth in the pipeline.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the container_quotas middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#container_quotas\fR.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:account-quotas]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put after auth in the pipeline.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the account_quotas middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#account_quotas\fR.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:gatekeeper]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: this middleware requires python-dnspython
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the gatekeeper middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#gatekeeper\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is gatekeeper.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR "
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP "\fBset log_headers\fR"
 | 
						|
Enables the ability to log request headers. The default is False.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:container_sync]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: this middleware requires python-dnspython
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the container_sync middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#container_sync\fR.
 | 
						|
.IP \fBallow_full_urls\fR
 | 
						|
Set this to false if you want to disallow any full URL values to be set for
 | 
						|
any new X-Container-Sync-To headers. This will keep any new full urls from
 | 
						|
coming in, but won't change any existing values already in the cluster.
 | 
						|
Updating those will have to be done manually, as knowing what the true realm
 | 
						|
endpoint should be cannot always be guessed. The default is true.
 | 
						|
.IP \fBcurrent\fR
 | 
						|
Set this to specify this clusters //realm/cluster as "current" in /info
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:xprofile]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put it at the beginning of the pipeline to profile all middleware. But it is safer to put this after healthcheck.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP "\fBuse\fR"
 | 
						|
Entry point for paste.deploy for the xprofile middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#xprofile\fR.
 | 
						|
.IP "\fBprofile_module\fR"
 | 
						|
This option enable you to switch profilers which should inherit from python
 | 
						|
standard profiler. Currently the supported value can be 'cProfile', 'eventlet.green.profile' etc.
 | 
						|
.IP "\fBlog_filename_prefix\fR"
 | 
						|
This prefix will be used to combine process ID and timestamp to name the
 | 
						|
profile data file.  Make sure the executing user has permission to write
 | 
						|
into this path (missing path segments will be created, if necessary).
 | 
						|
If you enable profiling in more than one type of daemon, you must override
 | 
						|
it with an unique value like, the default is /var/log/swift/profile/account.profile.
 | 
						|
.IP "\fBdump_interval\fR"
 | 
						|
The profile data will be dumped to local disk based on above naming rule
 | 
						|
in this interval. The default is 5.0.
 | 
						|
.IP "\fBdump_timestamp\fR"
 | 
						|
Be careful, this option will enable profiler to dump data into the file with
 | 
						|
time stamp which means there will be lots of files piled up in the directory.
 | 
						|
The default is false
 | 
						|
.IP "\fBpath\fR"
 | 
						|
This is the path of the URL to access the mini web UI. The default is __profile__.
 | 
						|
.IP "\fBflush_at_shutdown\fR"
 | 
						|
Clear the data when the wsgi server shutdown. The default is false.
 | 
						|
.IP "\fBunwind\fR"
 | 
						|
Unwind the iterator of applications. Default is false.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.RS 0
 | 
						|
.IP "\fB[filter:versioned_writes]\fR"
 | 
						|
.RE
 | 
						|
 | 
						|
Note: Put after slo, dlo in the pipeline.
 | 
						|
If you don't put it in the pipeline, it will be inserted automatically.
 | 
						|
 | 
						|
.RS 3
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the versioned_writes middleware. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#versioned_writes\fR.
 | 
						|
.IP \fBallow_versioned_writes\fR
 | 
						|
Enables using versioned writes middleware and exposing configuration settings via HTTP GET /info.
 | 
						|
WARNING: Setting this option bypasses the "allow_versions" option
 | 
						|
in the container configuration file, which will be eventually
 | 
						|
deprecated. See documentation for more details.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
 | 
						|
.SH APP SECTION
 | 
						|
.PD 1
 | 
						|
.RS 0
 | 
						|
This is indicated by section name [app:proxy-server]. Below are the parameters
 | 
						|
that are acceptable within this section.
 | 
						|
.IP \fBuse\fR
 | 
						|
Entry point for paste.deploy for the proxy server. This is the reference to the installed python egg.
 | 
						|
This is normally \fBegg:swift#proxy\fR.
 | 
						|
.IP "\fBset log_name\fR"
 | 
						|
Label used when logging. The default is proxy-server.
 | 
						|
.IP "\fBset log_facility\fR"
 | 
						|
Syslog log facility. The default is LOG_LOCAL0.
 | 
						|
.IP "\fBset log_level\fR"
 | 
						|
Logging level. The default is INFO.
 | 
						|
.IP "\fBset log_address\fR"
 | 
						|
Logging address. The default is /dev/log.
 | 
						|
.IP \fBlog_handoffs\fR
 | 
						|
Log when handoff locations are used.  Default is True.
 | 
						|
.IP \fBrecheck_account_existence\fR
 | 
						|
Cache timeout in seconds to send memcached for account existence. The default is 60 seconds.
 | 
						|
.IP \fBrecheck_container_existence\fR
 | 
						|
Cache timeout in seconds to send memcached for container existence. The default is 60 seconds.
 | 
						|
.IP \fBobject_chunk_size\fR
 | 
						|
Chunk size to read from object servers. The default is 8192.
 | 
						|
.IP \fBclient_chunk_size\fR
 | 
						|
Chunk size to read from clients. The default is 8192.
 | 
						|
.IP \fBnode_timeout\fR
 | 
						|
Request timeout to external services. The default is 10 seconds.
 | 
						|
.IP \fBrecoverable_node_timeout\fR
 | 
						|
How long the proxy server will wait for an initial response and to read a
 | 
						|
chunk of data from the object servers while serving GET / HEAD requests.
 | 
						|
Timeouts from these requests can be recovered from so setting this to
 | 
						|
something lower than node_timeout would provide quicker error recovery
 | 
						|
while allowing for a longer timeout for non-recoverable requests (PUTs).
 | 
						|
Defaults to node_timeout, should be overridden if node_timeout is set to a
 | 
						|
high number to prevent client timeouts from firing before the proxy server
 | 
						|
has a chance to retry.
 | 
						|
.IP \fBconn_timeout\fR
 | 
						|
Connection timeout to external services. The default is 0.5 seconds.
 | 
						|
.IP \fBpost_quorum_timeout\fR
 | 
						|
How long to wait for requests to finish after a quorum has been established. The default is 0.5 seconds.
 | 
						|
.IP \fBerror_suppression_interval\fR
 | 
						|
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.
 | 
						|
.IP \fBerror_suppression_limit\fR
 | 
						|
Error count to consider a node error limited. The default is 10.
 | 
						|
.IP \fBallow_account_management\fR
 | 
						|
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.
 | 
						|
.IP \fBaccount_autocreate\fR
 | 
						|
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.
 | 
						|
.IP \fBauto_create_account_prefix\fR
 | 
						|
Prefix used when automatically creating accounts. The default is '.'.
 | 
						|
.IP \fBmax_containers_per_account\fR
 | 
						|
If set to a positive value, trying to create a container when the account
 | 
						|
already has at least this maximum containers will result in a 403 Forbidden.
 | 
						|
Note: This is a soft limit, meaning a user might exceed the cap for
 | 
						|
recheck_account_existence before the 403s kick in.
 | 
						|
.IP \fBmax_containers_whitelist\fR
 | 
						|
This is a comma separated list of account hashes that ignore the max_containers_per_account cap.
 | 
						|
.IP \fBdeny_host_headers\fR
 | 
						|
Comma separated list of Host headers to which the proxy will deny requests. The default is empty.
 | 
						|
.IP \fBput_queue_depth\fR
 | 
						|
Depth of the proxy put queue. The default is 10.
 | 
						|
.IP \fBsorting_method\fR
 | 
						|
Storage nodes can be chosen at random (shuffle - default), by using timing
 | 
						|
measurements (timing), or by using an explicit match (affinity).
 | 
						|
Using timing measurements may allow for lower overall latency, while
 | 
						|
using affinity allows for finer control. In both the timing and
 | 
						|
affinity cases, equally-sorting nodes are still randomly chosen to
 | 
						|
spread load.
 | 
						|
The valid values for sorting_method are "affinity", "shuffle", and "timing".
 | 
						|
.IP \fBtiming_expiry\fR
 | 
						|
If the "timing" sorting_method is used, the timings will only be valid for
 | 
						|
the number of seconds configured by timing_expiry. The default is 300.
 | 
						|
.IP \fBconcurrent_gets\fR
 | 
						|
If "on" then use replica count number of threads concurrently during a GET/HEAD
 | 
						|
and return with the first successful response. In the EC case, this parameter
 | 
						|
only affects an EC HEAD as an EC GET behaves differently. Default is "off".
 | 
						|
.IP \fBconcurrency_timeout\fR
 | 
						|
This parameter controls how long to wait before firing off the next
 | 
						|
concurrent_get thread. A value of 0 would we fully concurrent, any other number
 | 
						|
will stagger the firing of the threads. This number should be between 0 and
 | 
						|
node_timeout. The default is the value of conn_timeout (0.5).
 | 
						|
.IP \fBrequest_node_count\fR
 | 
						|
Set to the number of nodes to contact for a normal request. You can use '* replicas'
 | 
						|
at the end to have it use the number given times the number of
 | 
						|
replicas for the ring being used for the request. The default is '2 * replicas'.
 | 
						|
.IP \fBread_affinity\fR
 | 
						|
Specifies which backend servers to prefer on reads. Format is a comma
 | 
						|
separated list of affinity descriptors of the form <selection>=<priority>.
 | 
						|
The <selection> may be r<N> for selecting nodes in region N or r<N>z<M> for
 | 
						|
selecting nodes in region N, zone M. The <priority> value should be a whole
 | 
						|
number that represents the priority to be given to the selection; lower numbers
 | 
						|
are higher priority. Default is empty, meaning no preference.
 | 
						|
 | 
						|
Example: first read from region 1 zone 1, then region 1 zone 2, then anything
 | 
						|
in region 2, then everything else:
 | 
						|
 | 
						|
.PD 0
 | 
						|
.RS 10
 | 
						|
.IP "read_affinity = r1z1=100, r1z2=200, r2=300"
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
.IP \fBwrite_affinity\fR
 | 
						|
Specifies which backend servers to prefer on writes. Format is a comma
 | 
						|
separated list of affinity descriptors of the form r<N> for region N or
 | 
						|
r<N>z<M> for region N, zone M. If this is set, then when handling an object
 | 
						|
PUT request, some number (see setting write_affinity_node_count) of local
 | 
						|
backend servers will be tried before any nonlocal ones. Default is empty,
 | 
						|
meaning no preference.
 | 
						|
 | 
						|
Example: try to write to regions 1 and 2 before writing to any other
 | 
						|
nodes:
 | 
						|
 | 
						|
.PD 0
 | 
						|
.RS 10
 | 
						|
write_affinity = r1, r2
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
.IP \fBwrite_affinity_node_count\fR
 | 
						|
The number of local (as governed by the write_affinity setting) nodes to
 | 
						|
attempt to contact first on writes, before any non-local ones. The value
 | 
						|
should be an integer number, or use '* replicas' at the end to have it use
 | 
						|
the number given times the number of replicas for the ring being used for the
 | 
						|
request. The default is '2 * replicas'.
 | 
						|
.IP \fBswift_owner_headers\fR
 | 
						|
These are the headers whose values will only be shown to swift_owners. The
 | 
						|
exact definition of a swift_owner is up to the auth system in use, but
 | 
						|
usually indicates administrative responsibilities.
 | 
						|
The default is 'x-container-read, x-container-write, x-container-sync-key, x-container-sync-to, x-account-meta-temp-url-key, x-account-meta-temp-url-key-2, x-container-meta-temp-url-key, x-container-meta-temp-url-key-2, x-account-access-control'.
 | 
						|
.IP \fBrate_limit_after_segment\fR
 | 
						|
Start rate-limiting object segments after the Nth segment of a segmented
 | 
						|
object.  The default is 10 segments.
 | 
						|
.IP \fBrate_limit_segments_per_sec\fR
 | 
						|
Once segment rate-limiting kicks in for an object, limit segments served to N
 | 
						|
per second.  The default is 1.
 | 
						|
.IP \fBnice_priority\fR
 | 
						|
Modify scheduling priority of server processes. Niceness values range from -20
 | 
						|
(most favorable to the process) to 19 (least favorable to the process).
 | 
						|
The default does not modify priority.
 | 
						|
.IP \fBionice_class\fR
 | 
						|
Modify I/O scheduling class of server processes. I/O niceness class values
 | 
						|
are IOPRIO_CLASS_RT (realtime), IOPRIO_CLASS_BE (best-effort) and IOPRIO_CLASS_IDLE (idle).
 | 
						|
The default does not modify class and priority.
 | 
						|
Work only with ionice_priority.
 | 
						|
.IP \fBionice_priority\fR
 | 
						|
Modify I/O scheduling priority of server processes. I/O niceness priority
 | 
						|
is a number which goes from 0 to 7. The higher the value, the lower
 | 
						|
the I/O priority of the process. Work only with ionice_class.
 | 
						|
Ignored if IOPRIO_CLASS_IDLE is set.
 | 
						|
.RE
 | 
						|
.PD
 | 
						|
 | 
						|
.SH DOCUMENTATION
 | 
						|
.LP
 | 
						|
More in depth documentation about the swift-proxy-server and
 | 
						|
also OpenStack Swift as a whole can be found at
 | 
						|
.BI https://docs.openstack.org/swift/latest/admin_guide.html
 | 
						|
and
 | 
						|
.BI https://docs.openstack.org/swift/latest/
 | 
						|
 | 
						|
.SH "SEE ALSO"
 | 
						|
.BR swift-proxy-server(1)
 |