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 primitive
TCP_DEFER_ACCEPT
, and Windows' optimized AcceptEx()
are currently supported.
Using none
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:
or nntp
:
AcceptFilter nntp none
The default protocol names are https
for port 443
and http
for all other ports. To specify that another
protocol is being used with a listening port, add the protocol
argument to the Listen
directive.
The default values on FreeBSD are:
AcceptFilter http httpready
AcceptFilter https dataready
The httpready
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
accf_http(9) man page for more details. Since HTTPS requests are
encrypted, only the
accf_data(9) filter is used.
The default values on Linux are:
AcceptFilter http data
AcceptFilter https data
Linux's TCP_DEFER_ACCEPT
does not support buffering http
requests. Any value besides none
will enable
TCP_DEFER_ACCEPT
on that listener. For more details
see the Linux
tcp(7) man page.
The default values on Windows are:
AcceptFilter http connect
AcceptFilter https connect
Window's mpm_winnt interprets the AcceptFilter to toggle the AcceptEx()
API, and does not support http protocol buffering. connect
will use the AcceptEx() API, also retrieve the network endpoint
addresses, but like none
the connect
option
does not wait for the initial data transmission.
On Windows, none
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.
The data
AcceptFilter (Windows)
For versions 2.4.23 and prior, the Windows data
accept
filter waited until data had been transmitted and the initial data
buffer and network endpoint addresses had been retrieved from the
single AcceptEx() invocation. This implementation was subject to a
denial of service attack and has been disabled.
Current releases of httpd default to the connect
filter
on Windows, and will fall back to connect
if
data
is specified. Users of prior releases are encouraged
to add an explicit setting of connect
for their
AcceptFilter, as shown above.
See also