GCS Amplitude
GCS Amplitude

Apache Core Features

... directives here ...

...

...

...

Example

ensure that mod_include is loaded Error "mod_include is required by mod_foo. Load it with LoadModule."

ensure that exactly one of SSL,NOSSL is defined Error "Both SSL and NOSSL are defined. Define only one of them."

Insert stuff that applies to cat.html here

This would apply to cat.html, bat.html, hat.php and so on.

...

force all files to be image/gif: ForceType image/gif

but normal mime-type associations here: ForceType None

...

...

...

type. The basic premise is for the kernel to not send a socket to the server process until either data is received or an entire HTTP Request is buffered. Only FreeBSD's Accept Filters, Linux's more primitive TCPDEFERACCEPT

, and Windows' optimized AcceptEx() are currently supported.

for an argument will disable any accept filters for that protocol. This is useful for protocols that require a server send data first, such as ftp:

for all other ports. To specify another protocol is being used with a listening port, add the protocol argument to the

AcceptFilter http httpready AcceptFilter https dataready

accept filter buffers entire HTTP requests at the kernel level. Once an entire request is received, the kernel then sends it to the server. See the accfhttp(9) man page for more details. Since HTTPS requests are encrypted only the accfdata(9) filter is used.

does not support buffering http requests. Any value besides none

Window's mpm_winnt interprets the AcceptFilter to toggle the AcceptEx() API, and does not support http protocol buffering. There are two values which utilize the Windows AcceptEx() API and will recycle network sockets between connections. data

waits until data has been transmitted as documented above, and the initial data buffer and network endpoint addresses are all retrieved from the single AcceptEx() invocation. connect

uses accept() rather than AcceptEx() and will not recycle sockets between connections. This is useful for network adapters with broken driver support, as well as some virtual network providers such as vpn drivers, or spam, virus or spyware filters.

points to a directory that contains only the single file here.html

The three possible arguments for the AcceptPathInfo

maps to a valid file.Default

by default.The primary purpose of the AcceptPathInfo

directive is to allow you to override the handler's choice of accepting or rejecting PATH_INFO

Options +Includes SetOutputFilter INCLUDES AcceptPathInfo On

before returning the document /usr/local/web/index.html

element, though the exact behavior is often dependent on the user's client configuration. A setting of AddDefaultCharset Off

disables this functionality. AddDefaultCharset On

. Any other value is assumed to be the charset to be used, which should be one of the IANA registered charset values for use in Internet media types (MIME types). For example:

should only be used when all of the text resources to which it applies are known to be in that character encoding and it is too inconvenient to label their charset individually. One such example is to add the charset parameter to resources containing generated content, such as legacy CGI scripts, that might be vulnerable to cross-site scripting attacks due to user-provided data being included in the output. Note, however, that a better solution is to just fix (or delete) those scripts, since setting a default charset does not protect users that have enabled the "auto-detect character encoding" feature on their browser.

, such URLs are refused with a 404 (Not found) error.

, such URLs are accepted, and encoded slashes are decoded like all other encoded characters.

is mostly useful when used in conjunction with PATH_INFO

If encoded slashes are needed in path info, use of NoDecode

is strongly recommended as a security measure. Allowing slashes to be decoded could potentially allow unsafe paths.

.htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess

).Note that a syntax error in a valid directive will still cause an internal server error.

). An equal sign may be given followed by a comma (but no spaces) separated lists of options that may be set using the Options

directive is allowed any other inherited option can be disabled by using the non-relative syntax. In other words, this mechanism cannot force a specific option to remain Optionsset while allowing any others to be set.

AllowOverride Options=Indexes,MultiViews

In the example above all directives that are neither in the group AuthConfig

block that refers to the directory where you're actually planning to place a .htaccess

AllowOverride AuthConfig AllowOverrideList CookieTracking CookieName

grants permission to the AllowOverride AuthConfig

MD5 is an algorithm for computing a "message digest" (sometimes called "fingerprint") of arbitrary-length data, with a high degree of confidence that any alterations in the data will be reflected in alterations in the message digest.

header provides an end-to-end message integrity check (MIC) of the entity-body. A proxy or client may check this header for detecting accidental modification of the entity-body in transit. Example header:

Note that this can cause performance problems on your server since the message digest is computed on every request (the values are not cached).

may be modified by changing the DEFAULTRELRUNTIMEDIR

. In prior versions, DefaultType would specify a default media type to assign to response content for which no other media type configuration could be found. DefaultType media-type|none

to configure media type assignments via file extensions, or the AddType

directive to configure the media type for specific resources. Otherwise, the server will send the response without a Content-Type header field and the recipient may attempt to guess the media type.ForceType

syntax. The variable is always globally defined and not limited to the scope of the surrounding config section.

Variable names may not contain colon ":" characters, to avoid clashes with

are used to enclose a group of directives that will apply only to the named directory, sub-directories of that directory, and the files within the respective directories. Any directive that is allowed in a directory context may be used. Directory-path is either the full path to a directory, or a wild-card string using Unix shell-style matching. In a wild-card string, ?

matches any sequences of characters. You may also use []

will not match /home/user/public_html

Options Indexes FollowSymLinks

Be careful with the directory-path arguments: They have to literally match the filesystem path which Apache httpd uses to access the files. Directives applied to a particular

will not apply to files accessed from that same directory via a different path, such as via different symbolic links.

that consisted of three numbers.

sections match the directory (or one of its parents) containing a document, then the directives are applied in the order of shortest match first, interspersed with the directives from the .htaccess files. For example, with

in that order.Regular expressions are not considered until after all of the normal sections have been applied. Then all of the regular expressions are tested in the order they appeared in the configuration file. For example, with

Note that the default access for is to permit all access. This means that Apache httpd will serve any file mapped from an URL. It is recommended that you change this with a block such as

and then override this for directories you want accessible. See the Security Tips page for more details.

The directory sections occur in the apache2.conf

) and could not match the end of line symbol ($). In 2.3.9 and later, only directories that match the expression are affected by the enclosed directives. From 2.4.8 onwards, named groups and backreferences are captured and written to the environment with the corresponding name prefixed with "MATCH_" and in upper case. This allows elements of paths to be referenced from within expressions and modules like

. In order to prevent confusion, numbered (unnamed) backreferences are ignored. Use named groups instead.mod_rewrite

[^/]+)> require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example

would match if the remote address of a request belongs to the subnet 10.0.0.0/8 but not to the subnet 10.1.0.0/16.

This memory-mapping sometimes yields a performance improvement. But in some environments, it is better to disable the memory-mapping to prevent operational problems:

to crash with a segmentation fault. For server configurations that are vulnerable to these problems, you should disable memory-mapping of delivered files by specifying:

For NFS mounted files, this feature may be disabled explicitly for the offending files by specifying:

may use the sendfile support from the kernel to transmit file contents to the client. By default, when the handling of a request requires no access to the data within a file -- for example, when delivering a static file -- Apache httpd uses sendfile to deliver the file contents without ever reading the file if the OS supports it.httpd

This sendfile mechanism avoids separate read and send operations, and buffer allocations. But on some platforms or within some filesystems, it is better to disable this feature to avoid operational problems:

(e.g., NFS, SMB, CIFS, FUSE), the kernel may be unable to serve the network file through its own cache.For server configurations that are not vulnerable to these problems, you may enable this feature by specifying:

. Only global definition of modcachediskEnableSendfile

directive, which is followed by the HTTP response code and a URL or a message. Apache httpd will sometimes offer additional information regarding the problem/error.

URLs can begin with a slash (/) for local web-paths (relative to the

), or be a full URL which the client can resolve. Alternatively, a message can be provided to be displayed by the browser. Examples:DocumentRoot

ErrorDocument 500 http://foo.example.com/cgi-bin/tester ErrorDocument 404 /cgi-bin/badurls.pl ErrorDocument 401 /subscriptioninfo.html ErrorDocument 403 "Sorry can't allow you access today" ErrorDocument 403 Forbidden!

will restore Apache httpd's simple hardcoded message for configurations that would otherwise inherit an existing ErrorDocument

ErrorDocument 404 /cgi-bin/bad_urls.pl ErrorDocument 404 default

in front of it), Apache HTTP Server will send a redirect to the client to tell it where to find the document, even if the document ends up being on the same server. This has several implications, the most important being that the client will not receive the original error status code, but instead will receive a redirect status code. This in turn can confuse web robots and other clients which try to determine if a URL is valid using the status code. In addition, if you use a remote URL in an ErrorDocument 401

, the client will not know to prompt the user for a password since it will not receive the 401 status code. Therefore, if you use an ErrorDocument 401 directive then it must refer to a local document.

Microsoft Internet Explorer (MSIE) will by default ignore server-generated error messages when they are "too small" and substitute its own "friendly" error messages. The size threshold varies depending on the type of error, but in general, if you make your error document greater than 512 bytes, then MSIE will show the server-generated error rather than masking it. More information is available in Microsoft Knowledge Base article Q294807.

Although most error messages can be overridden, there are certain circumstances where the internal messages are used regardless of the setting of

. In particular, if a malformed request is detected, normal request processing will be immediately halted and the internal error message returned. This is necessary to guard against security problems caused by bad requests.ErrorDocument

so that you can provide custom error messages on behalf of your Origin servers. If you don't enable ProxyErrorOverride, Apache httpd will not generate custom error documents for proxied content.ProxyErrorOverride

ErrorLog file-path|syslog[:facility]

If the file-path begins with a pipe character "|

" then it is assumed to be a command to spawn to handle the error log.

See the notes on piped logs for more information.

instead of a filename enables logging via syslogd(8) if the system supports it. The default is to use syslog facility local7

syntax where facilityfacility can be one of the names usually documented in syslog(1). The facility is effectively global, and if it is changed in individual virtual hosts, the final facility specified affects the entire server.

SECURITY: See the security tips document for details on why your security could be compromised if the directory where log files are stored is writable by anyone other than the user that starts the server.

When entering a file path on non-Unix platforms, care should be taken to make sure that only forward slashes are used even though the platform may allow the use of back slashes. In general it is a good idea to always use forward slashes throughout the configuration files.

#Simple example ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"

It can happen that some format string items do not produce output. For example, the Referer header is only present if the log message is associated to a request and the log message happens at a time when the Referer header has already been read from the client. If no output is produced, the default behavior is to delete everything from the preceding space character to the next space character. This means the log line is implicitly divided into fields on non-whitespace to whitespace transitions. If a format string item does not produce output, the whole field is omitted. For example, if the remote address %a

is not available, the surrounding brackets are not logged either. Space characters can be escaped with a backslash to prevent them from delimiting a field. The combination '% ' (percent space) is a zero-width field delimiter that does not produce any output.

(minus) modifier causes a minus to be logged if the respective item does not produce any output. In once-per-connection/request formats, it is also possible to use the +

(plus) modifier. If an item with the plus modifier does not produce any output, the whole line is omitted.

A number as modifier can be used to assign a log severity level to a format item. The item will only be logged if the severity of the log message is not higher than the specified log severity level. The number can range from 1 (alert) over 4 (warn) and 7 (debug) to 15 (trace8).

| Modified Token | Meaning | |---|---| %-{Referer}i | Logs a - if Referer is not set. | %+{Referer}i | Omits the entire line if Referer is not set. | %4{Referer}i | Logs the Referer only if the log message severity is higher than 4. |

| Format String | Description | |---|---| %% | The percent sign | %a | Client IP address and port of the request | %{c}a | Underlying peer IP address and port of the connection (see the module) | %A | Local IP-address and port | %{ | Request environment variable name | %E | APR/OS error status code and string | %F | Source file name and line number of the log call | %{ | Request header name | %k | Number of keep-alive requests on this connection | %l | Loglevel of the message | %L | Log ID of the request | %{c}L | Log ID of the connection | %{C}L | Log ID of the connection if used in connection scope, empty otherwise | %m | Name of the module logging the message | %M | The actual log message | %{ | Request note name | %P | Process ID of current process | %T | Thread ID of current thread | %{g}T | System unique thread ID of current thread (the same ID as displayed by e.g. top ; currently Linux only) | %t | The current time | %{u}t | The current time including micro-seconds | %{cu}t | The current time in compact ISO 8601 format, including micro-seconds | %v | The canonical of the current server. | %V | The server name of the server serving the request according to the setting. | \ (backslash space) | Non-field delimiting space | % (percent space) | Field delimiter (no output) |

produces a unique id for a connection or request. This can be used to correlate which log lines belong to the same connection or request, which request happens on which connection. A %L

, to allow to correlate access log entries with error log lines. If modlogconfig

#Example (default format for threaded MPMs) ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"

[Thu May 12 08:28:57.652118 2011] [core:error] [pid 8777:tid 4326490112] [client ::1:58619] File does not exist: /usr/local/apache2/htdocs/favicon.ico

Notice that, as discussed above, some fields are omitted entirely because they are not defined.

#Advanced example with request/connection log IDs ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M" ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T" ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'" ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'" ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"

This setting applies to the entire server, and cannot be enabled or disabled on a virtualhost-by-virtualhost basis. The collection of extended status information can slow down the server. Also note that this setting cannot be changed during a graceful restart.

will change the default behavior to ExtendedStatus On, while other third party modules may do the same. Such modules rely on collecting detailed information about the state of all workers. The default is changed by mod_status

directive allows you to choose which of these -- if any -- should be used. The recognized keywords are:

FileETag INode MTime Size

, which allow changes to be made to the default setting inherited from a broader scope. Any keyword appearing without such a prefix immediately and completely cancels the inherited setting.

as a storage provider. moddavfs

comparisons on conditional requests. These conditional requests will break if the ETag

can be nested inside

sections to restrict the portion of the filesystem they apply to.

would match most common Internet graphics formats.

This directive primarily overrides the content types generated for static files served out of the filesystem. For resources other than static files, where the generator of the response typically specifies a Content-Type, this directive has no effect.

GprofDir /tmp/gprof/|/tmp/gprof/%

refers to doing double-reverse DNS lookup. That is, after a reverse lookup is performed, a forward lookup is then performed on that result. At least one of the IP addresses in the forward lookup must match the original address. (In "tcpwrappers" terminology this is called PARANOID

is used for controlling access by hostname, a double reverse lookup will be performed. This is necessary for security. Note that the result of this double-reverse isn't generally available unless you set modauthzhostHostnameLookups Double

and a request is made to an object that is protected by hostname restrictions, regardless of whether the double-reverse fails or not, CGIs will still be passed the single-reverse result in REMOTE_HOST

in order to save the network traffic for those sites that don't truly need the reverse lookups done. It is also better for the end users because they don't have to suffer the extra latency that a lookup entails. Heavily loaded sites should leave this directive Off

, since DNS lookups can take considerable amounts of time. The utility

subdirectory of your installation directory, can be used to look up host names from logged IP addresses offline.

would match HTTP/1.0 requests without a Host: header. Expressions may contain various shell-like operators for string comparison (==

), and a large number of other properties. The full documentation is available in Expressions in Apache HTTP Server.

In the former case, the directives between the start and end markers are only processed if the parameter named parameter-name is defined. The second format reverses the test, and only processes the directives if parameter-name is not defined.

sections are nest-able, which can be used to implement simple multiple-parameter tests. Example:

httpd -DReverseProxy -DUseCache -DMemCache ...

LoadModule proxymodule modules/modproxy.so LoadModule proxyhttpmodule modules/modproxyhttp.so LoadModule cachemodule modules/modcache.so LoadModule memcachemodule modules/modmemcache.so LoadModule cachediskmodule modules/modcachedisk.so

The module argument can be either the module identifier or the file name of the module, at the time it was compiled. For example, rewrite_module

is the file name. If a module consists of several source files, use the name of the file containing the string STANDARD20MODULESTUFF

) wildcard characters can be used in the filename or directory parts of the path to include several files at once, in alphabetical order. In addition, if Include

points to a directory, rather than a file, Apache httpd will read all files in that directory and any subdirectory. However, including entire directories is not recommended, because it is easy to accidentally leave temporary files in a directory that can cause

to fail. Instead, we encourage you to use the wildcard syntax shown below, to include files that match a particular pattern, such as *.conf, for example.httpd

For HTTP/1.0 clients, Keep-Alive connections will only be used if they are specifically requested by a client. In addition, a Keep-Alive connection with an HTTP/1.0 client can only be used when the length of the content is known in advance. This implies that dynamic content such as CGI output, SSI pages, and server-generated directory listings will generally not use Keep-Alive connections to HTTP/1.0 clients. For HTTP/1.1 clients, persistent connections are the default unless otherwise specified. If the client requests it, chunked encoding will be used in order to send content of unknown length over persistent connections.

to a high value may cause performance problems in heavily loaded servers. The higher the timeout, the more server processes will be kept occupied waiting on connections with idle clients.

, leaving all other methods unprotected:

to succeed authorizes the request, regardless of the presence of other Require

prevents the server from crashing when entering an infinite loop of internal redirects or subrequests. Such loops are usually caused by misconfigurations.

The directive stores two different limits, which are evaluated on per-request basis. The first number is the maximum number of internal redirects, that may follow each other. The second number determines, how deep subrequests may be nested. If you specify only one number, it will be assigned to both limits.

directive allows the user to set a limit on the allowed size of an HTTP request message body within the context in which the directive is given (server, per-directory, per-file or per-location). If the client request exceeds that limit, the server will return an error response instead of servicing the request. The size of a normal request message body will vary greatly depending on the nature of the resource and the methods allowed on that resource. CGI scripts typically use the message body for retrieving form information. Implementations of the PUT

This directive gives the server administrator greater control over abnormal client request behavior, which may be useful for avoiding some forms of denial-of-service attacks.

If, for example, you are permitting file upload to a particular location, and wish to limit the size of the uploaded file to 100K, you might use the following directive:

directive allows the server administrator to modify the limit on the number of request header fields allowed in an HTTP request. A server needs this value to be larger than the number of fields that a normal client request might include. The number of request header fields used by a client rarely exceeds 20, but this may vary among different client implementations, often depending upon the extent to which a user has configured their browser to support detailed content negotiation. Optional HTTP extensions are often expressed using request header fields.

This directive gives the server administrator greater control over abnormal client request behavior, which may be useful for avoiding some forms of denial-of-service attacks. The value should be increased if normal clients see an error response from the server that indicates too many fields were sent in the request.

directive allows the server administrator to set the limit on the allowed size of an HTTP request header field. A server needs this value to be large enough to hold any one header field from a normal client request. The size of a normal request header field will vary greatly among different client implementations, often depending upon the extent to which a user has configured their browser to support detailed content negotiation. SPNEGO authentication headers can be up to 12392 bytes.

directive places a restriction on the length of a request-URI allowed for a request on the server. A server needs this value to be large enough to hold any of its resource names, including any information that might be passed in the query part of a GET

sections operate completely outside the filesystem. This has several consequences. Most importantly,

directives should not be used to control access to filesystem locations. Since several different URLs may map to the same filesystem location, such access controls may by circumvented.

The enclosed directives will be applied to the request if the path component of the URL meets any of the following criteria:

In the example below, where no trailing slash is used, requests to /private1, /private1/ and /private1/file.txt will have the enclosed directives applied, but /private1other would not.

In the example below, where a trailing slash is used, requests to /private2/ and /private2/file.txt will have the enclosed directives applied, but /private2 and /private2other would not.

would match URLs that contained the substring /extra/data

behaves identical to the regex version of

is hard to distinguish from -

directive. For example, to enable status requests, but allow them only from browsers at SetHandlerexample.com

The slash character has special meaning depending on where in a URL it appears. People may be used to its behavior in the filesystem where multiple adjacent slashes are frequently collapsed to a single slash (i.e., /home///foo

Level | Description | Example | |---|---|---| emerg | Emergencies - system is unusable. | "Child cannot open lock file. Exiting" | alert | Action must be taken immediately. | "getpwuid: couldn't determine user name from uid" | crit | Critical Conditions. | "socket: Failed to get a socket, exiting child" | error | Error conditions. | "Premature end of script headers" | warn | Warning conditions. | "child process 1234 did not exit, sending another SIGHUP" | notice | Normal but significant condition. | "httpd: caught SIGBUS, attempting to dump core in ..." | info | Informational. | "Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)..." | debug | Debug-level messages | "Opening config file ..." | trace1 | Trace messages | "proxy: FTP: control connection complete" | trace2 | Trace messages | "proxy: CONNECT: sending the CONNECT request to the remote proxy" | trace3 | Trace messages | "openssl: Handshake: start" | trace4 | Trace messages | "read from buffered SSL brigade, mode 0, 17 bytes" | trace5 | Trace messages | "map lookup FAILED: map=rewritemap key=keyname" | trace6 | Trace messages | "cache lookup FAILED, forcing new map lookup" | trace7 | Trace messages, dumping large amounts of data | "| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |" | trace8 | Trace messages, dumping large amounts of data | "| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |" |

cannot be suppressed and thus are always logged. However, this doesn't apply when logging is done using syslog

Specifying a level without a module name will reset the level for all modules to that level. Specifying a level with a module name will set the level for that module only. It is possible to use the module source file name, the module identifier, or the module identifier with the trailing _module

omitted as module specification. This means the following three specifications are equivalent:

LogLevel info ssl:warn LogLevel info modssl.c:warn LogLevel info sslmodule:warn

100-200,150-300

This option is provided for compatibility with releases prior to 2.4.10, where trailers were always merged.

This selects the default locking implementation, as determined by APR. The default locking implementation can be displayed by running

This is a mutex variant based on a Posix semaphore.

The semaphore ownership is not recovered if a thread in the process holding the mutex segfaults, resulting in a hang of the web server.

It is possible to "leak" SysV semaphores if processes crash before the semaphore is removed.

The semaphore API allows for a denial of service attack by any CGIs running under the same uid as the webserver (i.e., all CGIs, unless you use something like

This selects the "best" available semaphore implementation, choosing between Posix and SystemV IPC semaphores, in that order.

On most systems, if a child process terminates abnormally while holding a mutex that uses this implementation, the server will deadlock and stop responding to requests. When this occurs, the server will require a manual restart to recover.

Solaris is a notable exception as it provides a mechanism which usually allows the mutex to be recovered after a child process terminates abnormally while holding a mutex.

If your system implements the pthreadmutexattrsetrobust_np()

function, you may be able to use the pthread

When multiple mutexes based on this mechanism are used within multi-threaded, multi-process environments, deadlock errors (EDEADLK) can be reported for valid mutex operations if fcntl()

Most mechanisms are only available on selected platforms, where the underlying platform and APR support it. Mechanisms which aren't available on all platforms are posixsem, sysvsem, sem, pthread, fcntl, flock, and file.

and never a directory residing on a NFS- or AFS-filesystem. The basename of the file will be the mutex type, an optional instance string provided by the module, and unless the OmitPID

keyword is specified, the process id of the httpd parent process will be appended to to make the file name unique, avoiding conflicts when multiple httpd instances share a lock file directory. For example, if the mutex name is mpm-accept

It is best to avoid putting mutex files in a world-writable directory such as /var/tmp

because someone could create a denial of service attack and prevent the server from starting by creating a lockfile with the same name as the one the server will try to create.

| Mutex name | Module(s) | Protected resource | |---|---|---| mpm-accept | and MPMs | incoming connections, to avoid the thundering herd problem; for more information, refer to the |

Omitting this option should not be considered a security restriction, since symlink testing is subject to race conditions that make it circumventable.

will return a formatted listing of the directory.MultiViews

. This option gets ignored if set anywhere other than

needs real resources to compare against and evaluate from.mod_negotiation

This applies to processes forked off from Apache httpd children servicing requests, not the Apache httpd children themselves. This includes CGI scripts and SSI exec commands, but not any processes forked off from the Apache httpd parent such as piped logs.

If CGI processes are not running under user ids other than the web server user id, this directive will limit the number of processes that the server itself can create. Evidence of this situation will be indicated by cannot fork messages in the

ScriptInterpreterSource Registry|Registry-Strict|Script

#!C:/Perl/bin/perl.exe

will cause the Windows Registry tree HKEYCLASSESROOT

) as a search key. The command defined by the registry subkey Shell\ExecCGI\Command

is used to open the script file. If the registry keys cannot be found, Apache httpd falls back to the behavior of the Script

'ed directories, because Apache httpd will try to execute ScriptAliasevery file within this directory. The Registry

setting may cause undesired program calls on files which are typically not executed. For example, the default open command on .htm

file existing within the script directory would start the browser in the background on the server. This is a good way to crash your system within a minute or so.

key is not a common one. It must be configured manually in the windows registry and hence prevents accidental program calls on your system.

displays the actual request being handled. For historical purposes, only 63 characters of the request are actually stored for display purposes. This directive controls whether the 1st 63 characters are stored (the previous behavior and the default) or if the last 63 characters are. This is only applicable, of course, if the length of the request is 64 characters or greater.

If Apache httpd is handling GET /disk1/storage/apache/htdocs/images/imagestore1/food/apples.jpg HTTP/1.1

in hyperlink targets. However, it's recommended to actually use an email address, since there are a lot of CGI scripts that make that assumption. If you want to use an URL, it should point to another server under your control. Otherwise users may not be able to contact you in case of errors.

It may be worth setting up a dedicated address for this, e.g.

as users do not always mention that they are talking about the server!

ServerName server.example.com ServerAlias server server2.example.com server2 ServerAlias .example.com UseCanonicalName Off # ...

ServerName [scheme://]fully-qualified-domain-name[:port]

directive may appear anywhere within the definition of a server. However, each appearance overrides the previous appearance (within that server).

is specified, then the server attempts to deduce the hostname by performing a reverse lookup on the IP address. If no port is specified in the ServerName

, then the server will use the port from the incoming request. For optimal reliability and predictability, you should specify an explicit hostname and port using the ServerName

Sometimes, the server runs behind a device that processes SSL, such as a reverse proxy, load balancer or SSL offload appliance. When this is the case, specify the https://

directive to make sure that the server generates the correct self-referential URLs.

httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName

output, ...). The reason why you would want to enable such a footer line is that in a chain of proxies, the user often has no possibility to tell which of the chained servers actually produced a returned error message.mod_info

setting, which is the default, suppresses the footer line (and is therefore compatible with the behavior of Apache-1.2 and below). The On

setting simply adds a line with the server version number and

setting additionally creates a "mailto:" reference to the

After version 2.0.44, the details of the server version number presented are controlled by the

HTTP response headerServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full

to less than minimal

is not recommended because it makes it more difficult to debug interoperational problems. Also note that disabling the Server: header does nothing at all to make your server more secure; the idea of "security through obscurity" is a myth and leads to a false sense of safety. | |---|

Another example: if you wanted to have the server display a status report whenever a URL of http://servername/status

overrides default handlers, normal behavior such as handling of URLs ending in a slash (/) as directories or index files is suppressed.

Finally, for testing and diagnostic purposes only, request bodies may be allowed using the non-compliant TraceEnable extended

directive. The core (as an origin server) will restrict the request body to 64k (plus 8k for chunk headers if Transfer-Encoding: chunked

is used). The core will reflect the full headers and all chunk headers with the response body. As a proxy server, the request body is not restricted to 64k.

Despite claims to the contrary, TRACE

is not a security vulnerability and there is no viable reason for it to be disabled. Doing so necessarily makes your server non-compliant.

An example where this may be useful is on an intranet server where you have users connecting to the machine using short names such as www

. You'll notice that if the users type a shortname, and a URL which is a directory, such as http://www/splat

. If you have authentication enabled, this will cause the user to have to authenticate twice (once for www

, which is intended for use with mass IP-based virtual hosting to support ancient clients that do not provide a Host:

header. With this option Apache httpd does a reverse DNS lookup on the server IP address that the client connected to in order to work out self-referential URLs.

If CGIs make assumptions about the values of SERVER_NAME

they may be broken by this option. The client is essentially free to give whatever value they want as a hostname. But if the CGI is only using SERVER_NAME

directive, provide the actual physical port number being used by this request as a potential port. With UseCanonicalNameUseCanonicalPhysicalPort Off

...

ServerAdmin webmaster@host.example.com DocumentRoot /www/docs/host.example.com ServerName host.example.com ErrorLog logs/host.example.com-errorlog TransferLog logs/host.example.com-accesslog

IPv6 addresses must be specified in square brackets because the optional port number could not be determined otherwise. An IPv6 example is shown below:

ServerAdmin webmaster@host.example.com DocumentRoot /www/docs/host.example.com ServerName host.example.com ErrorLog logs/host.example.com-errorlog TransferLog logs/host.example.com-accesslog

Each Virtual Host must correspond to a different IP address, different port number or a different host name for the server, in the former case the server machine must be configured to accept IP packets for multiple addresses. (If the machine does not have multiple network interfaces, then this can be accomplished with the ifconfig alias

does not affect what addresses Apache httpd listens on. You may need to ensure that Apache httpd is listening on the correct addresses using

based on the local IP address and port combination only. Non-wildcards have a higher precedence. If no match based on IP and port occurs at all, the "main" server configuration is used.

Modules | Directives | FAQ | Glossary | Sitemap

Apache HTTP Server Version 2.4

Apache Core Features

Available Languages: de | en | es | fr | ja | tr

AcceptFilter Directive

This directive enables operating system specific optimizations for a listening socket by the Protocol type. The basic premise is for the kernel to not send a socket to the server process until either data is received or an entire HTTP Request is buffered. Only FreeBSD's Accept Filters, Linux's more

AcceptPathInfo Directive

This directive controls whether requests that contain trailing pathname information that follows an actual filename (or non-existent file in an existing directory) will be accepted or rejected. The trailing pathname information can be made available to scripts in the PATH_INFO environment variable.

AccessFileName Directive

While processing a request the server looks for the first existing configuration file from this list of names in every directory of the path to the document, if distributed configuration files are enabled for that directory. For example:

AddDefaultCharset Directive

This directive specifies a default value for the media type charset parameter (the name of a character encoding) to be added to a response if and only if the response's content-type is either text/plain or text/html. This should override any charset specified in the body of the response via a META e

AllowEncodedSlashes Directive

The AllowEncodedSlashes directive allows URLs which contain encoded path separators (%2F for / and additionally %5C for \ on according systems) to be used in the path info.

AllowOverride Directive

When the server finds an .htaccess file (as specified by AccessFileName) it needs to know which directives declared in that file can override earlier configuration directives.

AllowOverrideList Directive

When the server finds an .htaccess file (as specified by AccessFileName) it needs to know which directives declared in that file can override earlier configuration directives.

CGIMapExtension Directive

This directive is used to control how Apache httpd finds the interpreter used to run CGI scripts. For example, setting CGIMapExtension sys:\foo.nlm .foo will cause all CGI script files with a .foo extension to be passed to the FOO interpreter.

ContentDigest Directive

This directive enables the generation of Content-MD5 headers as defined in RFC1864 respectively RFC2616.

DefaultRuntimeDir Directive

The DefaultRuntimeDir directive sets the directory in which the server will create various run-time files (shared memory, locks, etc.). If set as a relative path, the full path will be relative to ServerRoot.

DefaultType Directive

This directive has been disabled. For backwards compatibility of configuration files, it may be specified with the value none, meaning no default media type. For example:

Define Directive

In its one parameter form, Define is equivalent to passing the -D argument to httpd. It can be used to toggle the use of sections without needing to alter -D arguments in any startup scripts.

Directive

and are used to enclose a group of directives that will apply only to the named directory, sub-directories of that directory, and the files within the respective directories. Any directive that is allowed in a directory context may be used. Directory-path is either the full

Directive

and are used to enclose a group of directives which will apply only to the named directory (and the files within), the same as . However, it takes as an argument a regular expression. For example:

DocumentRoot Directive

This directive sets the directory from which httpd will serve files. Unless matched by a directive like Alias, the server appends the path from the requested URL to the document root to make the path to the document. Example:

Directive

The applies the enclosed directives if and only if the most recent or section in the same scope has not been applied. For example: In

Directive

The applies the enclosed directives if and only if both the given condition evaluates to true and the most recent or section in the same scope has not been applied. For example: In

EnableMMAP Directive

This directive controls whether the httpd may use memory-mapping if it needs to read the contents of a file during delivery. By default, when the handling of a request requires access to the data within a file -- for example, when delivering a server-parsed file using mod_include -- Apache httpd mem

EnableSendfile Directive

This directive controls whether httpd may use the sendfile support from the kernel to transmit file contents to the client. By default, when the handling of a request requires no access to the data within a file -- for example, when delivering a static file -- Apache httpd uses sendfile to deliver t

Error Directive

If an error can be detected within the configuration, this directive can be used to generate a custom error message, and halt configuration parsing. The typical use is for reporting required modules which are missing from the configuration.

ErrorDocument Directive

In the event of a problem or error, Apache httpd can be configured to do one of four things,

ErrorLog Directive

The ErrorLog directive sets the name of the file to which the server will log any errors it encounters. If the file-path is not absolute then it is assumed to be relative to the ServerRoot.

ErrorLogFormat Directive

ErrorLogFormat allows to specify what supplementary information is logged in the error log in addition to the actual log message.

ExtendedStatus Directive

This option tracks additional data per worker about the currently executing request, and a utilization summary; you can see these variables during runtime by configuring mod_status. Note that other modules may rely on this scoreboard.

FileETag Directive

The FileETag directive configures the file attributes that are used to create the ETag (entity tag) response header field when the document is based on a static file. (The ETag value is used in cache management to save network bandwidth.) The FileETag directive allows you to choose which of these --

Directive

The directive limits the scope of the enclosed directives by filename. It is comparable to the and directives. It should be matched with a directive. The directives given within this section will be applied to any object with a basename (last component of file

Directive

The directive limits the scope of the enclosed directives by filename, just as the directive does. However, it accepts a regular expression. For example:

ForceType Directive

When placed into an .htaccess file or a , or or section, this directive forces all matching files to be served with the content type identification given by media-type. For example, if you had a directory full of GIF files, but did not want to label them all with .gif,

GprofDir Directive

When the server has been compiled with gprof profiling support, GprofDir causes gmon.out files to be written to the specified directory when the process exits. If the argument ends with a percent symbol ('%'), subdirectories are created for each process id.

HostnameLookups Directive

This directive enables DNS lookups so that host names can be logged (and passed to CGIs/SSIs in REMOTE_HOST). The value Double refers to doing double-reverse DNS lookup. That is, after a reverse lookup is performed, a forward lookup is then performed on that result. At least one of the IP addresses

Directive

The directive evaluates an expression at runtime, and applies the enclosed directives if and only if the expression evaluates to true. For example:

Directive

The ... section is used to mark directives that are conditional. The directives within an section are only processed if the test is true. If test is false, everything between the start and end markers is ignored.

Directive

The ... section is used to mark directives that are conditional on the presence of a specific module. The directives within an section are only processed if the test is true. If test is false, everything between the start and end markers is ignored.

Include Directive

This directive allows inclusion of other configuration files from within the server configuration files.

IncludeOptional Directive

This directive allows inclusion of other configuration files from within the server configuration files. It works identically to the Include directive, with the exception that if wildcards do not match any file or directory, the IncludeOptional directive will be silently ignored instead of causing a

KeepAlive Directive

The Keep-Alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. In some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with

KeepAliveTimeout Directive

The number of seconds Apache httpd will wait for a subsequent request before closing the connection. By adding a postfix of ms the timeout can be also set in milliseconds. Once a request has been received, the timeout value specified by the Timeout directive applies.

Directive

Access controls are normally effective for all access methods, and this is the usual desired behavior. In the general case, access control directives should not be placed within a section.

Directive

and are used to enclose a group of access control directives which will then apply to any HTTP access method not listed in the arguments; i.e., it is the opposite of a section and can be used to control both standard and nonstandard/unrecognized methods. See the

LimitInternalRecursion Directive

An internal redirect happens, for example, when using the Action directive, which internally redirects the original request to a CGI script. A subrequest is Apache httpd's mechanism to find out what would happen for some URI if it were requested. For example, mod_dir uses subrequests to look for the

LimitRequestBody Directive

This directive specifies the number of bytes from 0 (meaning unlimited) to 2147483647 (2GB) that are allowed in a request body. See the note below for the limited applicability to proxy requests.

LimitRequestFields Directive

Number is an integer from 0 (meaning unlimited) to 32767. The default value is defined by the compile-time constant DEFAULT_LIMIT_REQUEST_FIELDS (100 as distributed).

LimitRequestFieldSize Directive

This directive specifies the number of bytes that will be allowed in an HTTP request header.

LimitRequestLine Directive

This directive sets the number of bytes that will be allowed on the HTTP request-line.

LimitXMLRequestBody Directive

Limit (in bytes) on maximum size of an XML-based request body. A value of 0 will disable any checking.

Directive

The directive limits the scope of the enclosed directives by URL. It is similar to the directive, and starts a subsection which is terminated with a directive. sections are processed in the order they appear in the configuration file, after the

Directive

The directive limits the scope of the enclosed directives by URL, in an identical manner to . However, it takes a regular expression as an argument instead of a simple string. For example:

LogLevel Directive

LogLevel adjusts the verbosity of the messages recorded in the error logs (see ErrorLog directive). The following levels are available, in order of decreasing significance:

MaxKeepAliveRequests Directive

The MaxKeepAliveRequests directive limits the number of requests allowed per connection when KeepAlive is on. If it is set to 0, unlimited requests will be allowed. We recommend that this setting be kept to a high value for maximum server performance.

MaxRangeOverlaps Directive

The MaxRangeOverlaps directive limits the number of overlapping HTTP ranges the server is willing to return to the client. If more overlapping ranges than permitted are requested, the complete resource is returned instead.

MaxRangeReversals Directive

The MaxRangeReversals directive limits the number of HTTP Range reversals the server is willing to return to the client. If more ranges reversals than permitted are requested, the complete resource is returned instead.

MaxRanges Directive

The MaxRanges directive limits the number of HTTP ranges the server is willing to return to the client. If more ranges than permitted are requested, the complete resource is returned instead.

MergeTrailers Directive

This directive controls whether HTTP trailers are copied into the internal representation of HTTP headers. This mergeing occurs when the request body has been completely consumed, long after most header processing would have a chance to examine or modify request headers.

Mutex Directive

The Mutex directive sets the mechanism, and optionally the lock file location, that httpd and modules use to serialize access to resources. Specify default as the first argument to change the settings for all mutexes; specify a mutex name (see table below) as the first argument to override defaults

NameVirtualHost Directive

Prior to 2.3.11, NameVirtualHost was required to instruct the server that a particular IP address and port combination was usable as a name-based virtual host. In 2.3.11 and later, any time an IP address and port combination is used in multiple virtual hosts, name-based virtual hosting is automatica

Options Directive

The Options directive controls which server features are available in a particular directory.

Protocol Directive

This directive specifies the protocol used for a specific listening socket. The protocol is used to determine which module should handle a request, and to apply protocol specific optimizations with the AcceptFilter directive.

RLimitCPU Directive

Takes 1 or 2 parameters. The first parameter sets the soft resource limit for all processes and the second parameter sets the maximum resource limit. Either parameter can be a number, or max to indicate to the server that the limit should be set to the maximum allowed by the operating system configu

RLimitMEM Directive

Takes 1 or 2 parameters. The first parameter sets the soft resource limit for all processes and the second parameter sets the maximum resource limit. Either parameter can be a number, or max to indicate to the server that the limit should be set to the maximum allowed by the operating system configu

RLimitNPROC Directive

Takes 1 or 2 parameters. The first parameter sets the soft resource limit for all processes and the second parameter sets the maximum resource limit. Either parameter can be a number, or max to indicate to the server that the limit should be set to the maximum allowed by the operating system configu

ScriptInterpreterSource Directive

This directive is used to control how Apache httpd finds the interpreter used to run CGI scripts. The default setting is Script. This causes Apache httpd to use the interpreter pointed to by the shebang line (first line, starting with #!) in the script. On Win32 systems this line usually looks like:

SeeRequestTail Directive

mod_status with ExtendedStatus On displays the actual request being handled. For historical purposes, only 63 characters of the request are actually stored for display purposes. This directive controls whether the 1st 63 characters are stored (the previous behavior and the default) or if the last 63

ServerAdmin Directive

The ServerAdmin sets the contact address that the server includes in any error messages it returns to the client. If the httpd doesn't recognize the supplied argument as an URL, it assumes, that it's an email-address and prepends it with mailto: in hyperlink targets. However, it's recommended to act

ServerAlias Directive

The ServerAlias directive sets the alternate names for a host, for use with name-based virtual hosts. The ServerAlias may include wildcards, if appropriate.

ServerName Directive

The ServerName directive sets the request scheme, hostname and port that the server uses to identify itself. This is used when creating redirection URLs.

ServerPath Directive

The ServerPath directive sets the legacy URL pathname for a host, for use with name-based virtual hosts.

ServerRoot Directive

The ServerRoot directive sets the directory in which the server lives. Typically it will contain the subdirectories conf/ and logs/. Relative paths in other configuration directives (such as Include or LoadModule, for example) are taken as relative to this directory.

ServerSignature Directive

The ServerSignature directive allows the configuration of a trailing footer line under server-generated documents (error messages, mod_proxy ftp directory listings, mod_info output, ...). The reason why you would want to enable such a footer line is that in a chain of proxies, the user often has no

ServerTokens Directive

This directive controls whether Server response header field which is sent back to clients includes a description of the generic OS-type of the server as well as information about compiled-in modules.

SetHandler Directive

When placed into an .htaccess file or a or section, this directive forces all matching files to be parsed through the handler given by handler-name. For example, if you had a directory you wanted to be parsed entirely as imagemap rule files, regardless of extension, you might

SetInputFilter Directive

The SetInputFilter directive sets the filter or filters which will process client requests and POST input when they are received by the server. This is in addition to any filters defined elsewhere, including the AddInputFilter directive.

SetOutputFilter Directive

The SetOutputFilter directive sets the filters which will process responses from the server before they are sent to the client. This is in addition to any filters defined elsewhere, including the AddOutputFilter directive.

TimeOut Directive

The TimeOut directive defines the length of time Apache httpd will wait for I/O in various circumstances:

TraceEnable Directive

This directive overrides the behavior of TRACE for both the core server and mod_proxy. The default TraceEnable on permits TRACE requests per RFC 2616, which disallows any request body to accompany the request. TraceEnable off causes the core server and mod_proxy to return a 405 (Method not allowed)

UnDefine Directive

Undoes the effect of a Define or of passing a -D argument to httpd.

UseCanonicalName Directive

In many situations Apache httpd must construct a self-referential URL -- that is, a URL that refers back to the same server. With UseCanonicalName On Apache httpd will use the hostname and port specified in the ServerName directive to construct the canonical name for the server. This name is used in

UseCanonicalPhysicalPort Directive

In many situations Apache httpd must construct a self-referential URL -- that is, a URL that refers back to the same server. With UseCanonicalPhysicalPort On Apache httpd will, when constructing the canonical port for the server to honor the UseCanonicalName directive, provide the actual physical po

Directive

and are used to enclose a group of directives that will apply only to a particular virtual host. Any directive that is allowed in a virtual host context may be used. When the server receives a request for a document on a particular virtual host, it uses the configuration