| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> |
| <!-- $LastChangedRevision$ --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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. |
| --> |
| |
| <modulesynopsis metafile="mod_reqtimeout.xml.meta"> |
| |
| <name>mod_reqtimeout</name> |
| <description>Set timeout and minimum data rate for receiving requests |
| </description> |
| <status>Extension</status> |
| <sourcefile>mod_reqtimeout.c</sourcefile> |
| <identifier>reqtimeout_module</identifier> |
| <compatibility>Available in Apache HTTPD 2.2.15 and later</compatibility> |
| |
| <section id="examples"><title>Examples</title> |
| |
| <ol> |
| <li> |
| Allow 10 seconds to receive the request including the headers and |
| 30 seconds for receiving the request body: |
| |
| <highlight language="config"> |
| RequestReadTimeout header=10 body=30 |
| </highlight> |
| </li> |
| |
| <li> |
| Allow at least 10 seconds to receive the request body. |
| If the client sends data, increase the timeout by 1 second for every |
| 1000 bytes received, with no upper limit for the timeout (except for |
| the limit given indirectly by |
| <directive module="core">LimitRequestBody</directive>): |
| |
| <highlight language="config"> |
| RequestReadTimeout body=10,MinRate=1000 |
| </highlight> |
| </li> |
| |
| <li> |
| Allow at least 10 seconds to receive the request including the headers. |
| If the client sends data, increase the timeout by 1 second for every |
| 500 bytes received. But do not allow more than 30 seconds for the |
| request including the headers: |
| |
| <highlight language="config"> |
| RequestReadTimeout header=10-30,MinRate=500 |
| </highlight> |
| </li> |
| |
| <li> |
| Usually, a server should have both header and body timeouts configured. |
| If a common configuration is used for http and https virtual hosts, the |
| timeouts should not be set too low: |
| |
| <highlight language="config"> |
| RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500 |
| </highlight> |
| </li> |
| |
| </ol> |
| </section> |
| |
| <directivesynopsis> |
| <name>RequestReadTimeout</name> |
| <description>Set timeout values for receiving request headers and body from client. |
| </description> |
| <syntax>RequestReadTimeout |
| [header=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>rate</var>] |
| [body=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>rate</var>] |
| </syntax> |
| <default>header=20-40,MinRate=500 body=20,MinRate=500</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| <compatibility>Available in version 2.2.15 and later; defaulted to disabled in |
| version 2.3.14 and earlier.</compatibility> |
| |
| <usage> |
| <p>This directive can set various timeouts for receiving the request headers |
| and the request body from the client. If the client fails to send headers or |
| body within the configured time, a <code>408 REQUEST TIME OUT</code> error |
| is sent.</p> |
| |
| <p>For SSL virtual hosts, the header timeout values include the time needed |
| to do the initial SSL handshake. If the user's browser is configured to |
| query certificate revocation lists and the CRL server is not reachable, the |
| initial SSL handshake may take a significant time until the browser gives up |
| waiting for the CRL. Therefore the header timeout values should not be set |
| to very low values for SSL virtual hosts. |
| The body timeout values include the time needed for SSL renegotiation |
| (if necessary).</p> |
| |
| <p>When an <directive module="core">AcceptFilter</directive> is in use |
| (usually the case on Linux and FreeBSD), the socket is not sent to the |
| server process before at least one byte (or the whole request for |
| <code>httpready</code>) is received. The header timeout configured with |
| <code>RequestReadTimeout</code> is only effective after the server process has |
| received the socket.</p> |
| |
| <p>For each of the two timeout types (header or body), there are three ways |
| to specify the timeout: |
| </p> |
| |
| <ul> |
| |
| <li><strong>Fixed timeout value</strong>:<br /> |
| |
| <example><var>type</var>=<var>timeout</var></example> |
| |
| <p>The time in seconds allowed for reading all of the request headers or |
| body, respectively. A value of 0 means no limit.</p> |
| </li> |
| |
| <li><strong>Disable module for a vhost:</strong>:<br /> |
| |
| <example>header=0 body=0</example> |
| |
| <p>This disables <module>mod_reqtimeout</module> completely.</p> |
| </li> |
| |
| <li><strong>Timeout value that is increased when data is |
| received</strong>:<br /> |
| <example> |
| <var>type</var>=<var>timeout</var>,MinRate=<var>data_rate</var> |
| </example> |
| |
| <p>Same as above, but whenever data is received, the timeout value is |
| increased according to the specified minimum data rate (in bytes per |
| second).</p> |
| </li> |
| |
| <li><strong>Timeout value that is increased when data is received, with an |
| upper bound</strong>:<br /> |
| <example> |
| <var>type</var>=<var>timeout</var>-<var>maxtimeout</var>,MinRate=<var>data_rate</var> |
| </example> |
| |
| <p>Same as above, but the timeout will not be increased above the second |
| value of the specified timeout range.</p> |
| </li> |
| |
| </ul> |
| |
| </usage> |
| |
| </directivesynopsis> |
| |
| </modulesynopsis> |