diff --git a/docs/GNUmakefile b/docs/GNUmakefile
index ebd8332..7069a31 100644
--- a/docs/GNUmakefile
+++ b/docs/GNUmakefile
@@ -24,7 +24,7 @@
 endef
 
 
-all:		changes html
+all:		changes
 
 changes:	$(TEMP)/$(NGINX)/CHANGES.ru				\
 		$(TEMP)/$(NGINX)/CHANGES
@@ -55,27 +55,3 @@
 docs/xslt/changes.xslt:		docs/xsls/changes.xsls
 
 	$(call XSLScript, docs/xsls/changes.xsls, $@)
-
-html:									\
-	docs/html/ngx_core_module.html					\
-	docs/html/http/ngx_http_core_module.html			\
-	docs/html/http/ngx_http_mp4_module.html
-
-docs/html/%.html:							\
-		docs/xml/%.xml						\
-		docs/xslt/module.xslt					\
-		docs/dtd/module.dtd
-	$(call XSLT, docs/xslt/module.xslt, $<, $@)
-
-docs/html/http/%.html:							\
-		docs/xml/http/%.xml					\
-		docs/xslt/module.xslt					\
-		docs/dtd/module.dtd
-	$(call XSLT, docs/xslt/module.xslt, $<, $@)
-
-docs/xslt/module.xslt:							\
-		docs/xslt/directive.xslt				\
-		docs/xslt/content.xslt
-
-docs/xslt/%.xslt:		docs/xsls/%.xsls
-	$(call XSLScript, $<, $@)
diff --git a/docs/dtd/module.dtd b/docs/dtd/module.dtd
deleted file mode 100644
index 0e448fa..0000000
--- a/docs/dtd/module.dtd
+++ /dev/null
@@ -1,85 +0,0 @@
-
-<!ELEMENT   module      (section+) >
-<!ATTLIST   module
-            name        CDATA #REQUIRED
-            id          ID #REQUIRED
->
-
-<!ELEMENT   section     (directive | para)+ >
-<!ATTLIST   section
-            name        CDATA #REQUIRED
-            id          ID #IMPLIED
->
-
-<!ELEMENT   directive   (syntax+, default, context+, para+) >
-<!ATTLIST   directive
-            name        ID #REQUIRED
-            appeared-in CDATA #IMPLIED
->
-
-<!ELEMENT   syntax      (#PCDATA | argument | code | parameter | value)* >
-
-<!ELEMENT   default     (#PCDATA | code)* >
-
-<!ELEMENT   context     (#PCDATA)* >
-
-<!ELEMENT   para        (#PCDATA | argument | c-def | c-func | code | command |
-                         dq | emphasis | example | header | http-status | link |
-                         list | note | parameter | pathname | value | var)* >
-
-<!ELEMENT   argument    (#PCDATA)* >
-
-<!ELEMENT   c-def       (#PCDATA)* >
-
-<!ELEMENT   c-func      (#PCDATA)* >
-
-<!ELEMENT   code        (#PCDATA | value)* >
-
-<!ELEMENT   command     (#PCDATA)* >
-
-<!ELEMENT   dq          ANY >
-
-<!ELEMENT   emphasis    (#PCDATA)* >
-
-<!ELEMENT   example     (#PCDATA)* >
-
-<!ELEMENT   header      (#PCDATA | argument)* >
-
-<!ELEMENT   http-status EMPTY >
-<!ATTLIST   http-status
-            code        CDATA #REQUIRED
-            text        CDATA #IMPLIED
->
-
-<!ELEMENT   link        (#PCDATA)* >
-<!ATTLIST   link
-            doc         CDATA #IMPLIED
-            id          CDATA #IMPLIED
-            url         CDATA #IMPLIED
->
-
-<!ELEMENT   list        (listitem+ | (tag-name | tag-desc)+) >
-<!ATTLIST   list
-            type        (bullet | enum | tag) #REQUIRED
->
-
-<!ELEMENT   listitem    ANY >
-<!ELEMENT   tag-name    ANY >
-<!ELEMENT   tag-desc    ANY >
-
-<!ELEMENT   note        ANY >
-
-<!ELEMENT   parameter   (#PCDATA)* >
-
-<!ELEMENT   pathname    (#PCDATA)* >
-
-<!ELEMENT   value       (#PCDATA)* >
-
-<!ELEMENT   var         (#PCDATA)* >
-
-<!ENTITY    nbsp        "&#xA0;" >
-<!ENTITY    mdash       "&nbsp;- " >
-<!ENTITY    lsquo       "&#8216;">
-<!ENTITY    rsquo       "&#8217;">
-<!ENTITY    ldquo       "&#8220;">
-<!ENTITY    rdquo       "&#8221;">
diff --git a/docs/html/http/ngx_http_core_module.html b/docs/html/http/ngx_http_core_module.html
deleted file mode 100644
index bb4f03f..0000000
--- a/docs/html/http/ngx_http_core_module.html
+++ /dev/null
@@ -1,1287 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>HTTP Core Module</title></head><body><center><h3>HTTP Core Module</h3></center><a name="directives"></a><center><h4>Directives</h4></center><hr><a name="aio"></a><strong>syntax</strong>:
-         <code>aio
-        <code>on</code> |
-        <code>off</code> |
-        <code>sendfile</code></code><br><strong>default</strong>:
-      <code>aio off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><strong>appeared in version</strong>:
-         0.8.11<p>
-Enables or disables the use of asynchronous file I/O (AIO)
-on FreeBSD and Linux.
-</p><p>
-On FreeBSD, AIO is usable starting from FreeBSD 4.3.
-AIO can either be linked statically into a kernel:
-<blockquote><pre>
-options VFS_AIO
-</pre></blockquote>
-or loaded dynamically as a kernel loadable module:
-<blockquote><pre>
-kldload aio
-</pre></blockquote></p><p>
-In FreeBSD versions 5 and 6, enabling AIO statically, or dynamically
-when booting the kernel, will cause the entire networking subsystem
-to use the Giant lock that can impact overall performance negatively.
-This limitation has been removed in FreeBSD 6.4-STABLE in 2009, and in
-FreeBSD 7.
-However, starting from FreeBSD 5.3 it is possible to enable AIO
-without the penalty of running the networking subsystem under a
-Giant lock - for this to work, the AIO module needs to be loaded
-after the kernel has booted.
-In this case, the following message will appear in
-<code>/var/log/messages</code><blockquote><pre>
-WARNING: Network stack Giant-free, but aio requires Giant.
-Consider adding 'options NET_WITH_GIANT' or setting debug.mpsafenet=0
-</pre></blockquote>
-and can safely be ignored.
-
-The requirement to use the Giant lock with AIO is related to the
-fact that FreeBSD supports asynchronous calls
-<code>aio_read()</code>
-and
-<code>aio_write()</code>
-when working with sockets.
-However, since nginx only uses AIO for disk I/O, no problems should arise.
-</p><p>
-For AIO to work,
-<a href="#sendfile">sendfile</a>
-needs to be disabled:
-<blockquote><pre>
-location /video/ {
-    sendfile       off;
-    aio            on;
-    output_buffers 1 64k;
-}
-</pre></blockquote></p><p>
-In addition, starting from FreeBSD 5.2.1 and nginx 0.8.12, AIO can
-also be used to pre-load data for <code>sendfile()</code>:
-<blockquote><pre>
-location /video/ {
-    sendfile       on;
-    tcp_nopush     on;
-    aio            sendfile;
-}
-</pre></blockquote>
-In this configuration, <code>sendfile()</code> is called with
-the <code>SF_NODISKIO</code> flag which causes it not to
-block on disk I/O and instead report back when the data are not in
-memory; nginx then initiates an asynchronous data load by reading
-one byte. The FreeBSD kernel then loads the first 128K bytes
-of a file into memory, however next reads will only load data
-in 16K chunks. This can be tuned using the
-<a href="#read_ahead">read_ahead</a>
-directive.
-</p><p>
-On Linux, AIO is usable starting from kernel version 2.6.22;
-plus, it is also necessary to enable
-<a href="#directio">directio</a>,
-otherwise reading will be blocking:
-<blockquote><pre>
-location /video/ {
-    aio            on;
-    directio       512;
-    output_buffers 1 128k;
-}
-</pre></blockquote></p><p>
-On Linux,
-<a href="#directio">directio</a>
-can only be used for reading blocks that are aligned on 512-byte
-boundaries (or 4K for XFS).
-Reading of unaligned file's end is still made in blocking mode.
-The same holds true for byte range requests, and for FLV requests
-not from the beginning of a file: reading of unaligned data at the
-beginning and end of a file will be blocking.
-There is no need to turn off
-<a href="#sendfile">sendfile</a>
-explicitly as it is turned off automatically when
-<a href="#directio">directio</a>
-is used.
-</p><hr><a name="alias"></a><strong>syntax</strong>:
-         <code>alias <code><i>path</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>location</code><br><p>
-Defines a replacement for the specified location.
-For example, with the following configuration
-<blockquote><pre>
-location /i/ {
-    alias /data/w3/images/;
-}
-</pre></blockquote>
-the request of
-&ldquo;<code>/i/top.gif</code>&rdquo; will be responded
-with the file
-&ldquo;<code>/data/w3/images/top.gif</code>&rdquo;.
-</p><p>
-The <code><i>path</i></code> value can contain variables.
-</p><p>
-If <code>alias</code> is used inside a location defined
-with a regular expression then such regular expression should
-contain captures and <code>alias</code> should refer to
-these captures (0.7.40), for example:
-<blockquote><pre>
-location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
-    alias /data/w3/images/$1;
-}
-</pre></blockquote></p><p>
-When location matches the last part of the directive's value:
-<blockquote><pre>
-location /images/ {
-    alias /data/w3/images/;
-}
-</pre></blockquote>
-it is better to use the
-<a href="#root">root</a>
-directive instead:
-<blockquote><pre>
-location /images/ {
-    root /data/w3;
-}
-</pre></blockquote></p><hr><a name="client_body_in_file_only"></a><strong>syntax</strong>:
-         <code>client_body_in_file_only
-        <code>on</code> |
-        <code>clean</code> |
-        <code>off</code></code><br><strong>default</strong>:
-      <code>client_body_in_file_only off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Determines whether nginx should save the entire client request body
-into a file.
-This directive can be used during debugging, or when using the
-<code>$request_body_file</code>
-variable, or the
-<a href="ngx_http_perl_module.html#methods">$r-&gt;request_body_file</a>
-method of the module
-<a href="ngx_http_perl_module.html">ngx_http_perl_module</a>.
-</p><p>
-When set to the value <code>on</code>, temporary files are not
-removed after request processing.
-</p><p>
-The value <code>clean</code> will cause the temporary files
-left after request processing to be removed.
-</p><hr><a name="client_body_in_single_buffer"></a><strong>syntax</strong>:
-         <code>client_body_in_single_buffer <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>client_body_in_single_buffer off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Determines whether nginx should save the entire client request body
-in a single buffer.
-The directive is recommended when using the
-<code>$request_body</code>
-variable, to save the number of copy operations involved.
-</p><hr><a name="client_body_buffer_size"></a><strong>syntax</strong>:
-         <code>client_body_buffer_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>client_body_buffer_size 8k/16k</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets buffer size for reading client request body.
-In case request body is larger than the buffer,
-the whole body or only its part is written to a temporary file.
-
-By default, buffer size is equal to two memory pages.
-This is 8K on x86, other 32-bit platforms, and x86-64.
-It is usually 16K on other 64-bit platforms.
-</p><hr><a name="client_body_temp_path"></a><strong>syntax</strong>:
-         <code>client_body_temp_path
-        <code><i>path</i></code>
-        [<code><i>level1</i></code>
-        [<code><i>level2</i></code>
-        [<code><i>level3</i></code>]]]
-</code><br><strong>default</strong>:
-      <code>client_body_temp_path client_body_temp</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Defines a directory for storing temporary files holding client request bodies.
-Up to three-level subdirectory hierarchy can be used underneath the specified
-directory.
-For example, in the following configuration
-<blockquote><pre>
-client_body_temp_path /spool/nginx/client_temp 1 2;
-</pre></blockquote>
-a temporary file might look like this:
-<blockquote><pre>
-/spool/nginx/client_temp/7/45/00000123457
-</pre></blockquote></p><hr><a name="client_body_timeout"></a><strong>syntax</strong>:
-         <code>client_body_timeout <code><i>time</i></code></code><br><strong>default</strong>:
-      <code>client_body_timeout 60</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Defines a timeout for reading client request body.
-A timeout is only set between two successive read operations,
-not for the transmission of the whole request body.
-If a client does not transmit anything within this time,
-the client error
-408 (Request Time-out)
-is returned.
-</p><hr><a name="client_header_buffer_size"></a><strong>syntax</strong>:
-         <code>client_header_buffer_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>client_header_buffer_size 1k</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code><br><p>
-Sets buffer size for reading client request header.
-For most requests, a buffer of 1K bytes is enough.
-However, if a request includes long cookies, or comes from a WAP client,
-it may not fit into 1K.
-If a request line, or a request header field do not fit entirely into
-this buffer then larger buffers are allocated, configured by the
-<a href="#large_client_header_buffers">large_client_header_buffers</a>
-directive.
-</p><hr><a name="client_header_timeout"></a><strong>syntax</strong>:
-         <code>client_header_timeout <code><i>time</i></code></code><br><strong>default</strong>:
-      <code>client_header_timeout 60</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code><br><p>
-Defines a timeout for reading client request header.
-If a client does not transmit the entire header within this time,
-the client error
-408 (Request Time-out)
-is returned.
-</p><hr><a name="client_max_body_size"></a><strong>syntax</strong>:
-         <code>client_max_body_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>client_max_body_size 1m</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets the maximum allowed size of the client request body,
-specified in the
-<code>Content-Length</code>
-request header field.
-If it exceeds the configured value, the client error
-413 (Request Entity Too Large)
-is returned.
-Please be aware that
-<a href="/web/upload.html">browsers cannot correctly display
-this error</a>.
-</p><hr><a name="default_type"></a><strong>syntax</strong>:
-         <code>default_type <code><i>mime-type</i></code></code><br><strong>default</strong>:
-      <code>default_type text/plain</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Defines a default MIME-type of a response.
-</p><hr><a name="directio"></a><strong>syntax</strong>:
-         <code>directio <code><i>size</i></code> | <code>off</code></code><br><strong>default</strong>:
-      <code>directio off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><strong>appeared in version</strong>:
-         0.7.7<p>
-Enables the use of
-the <code>O_DIRECT</code> flag (FreeBSD, Linux),
-the <code>F_NOCACHE</code> flag (Mac OS X),
-or the <code>directio()</code> function (Solaris),
-when reading files that are larger than the specified <code><i>size</i></code>.
-It automatically disables (0.7.15) the use of
-<a href="#sendfile">sendfile</a>
-for a given request.
-It could be useful for serving large files:
-<blockquote><pre>
-directio 4m;
-</pre></blockquote>
-or when using <a href="#aio">aio</a> on Linux.
-</p><hr><a name="directio_alignment"></a><strong>syntax</strong>:
-         <code>directio_alignment <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>directio_alignment 512</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><strong>appeared in version</strong>:
-         0.8.11<p>
-Sets an alignment for
-<a href="#directio">directio</a>.
-In most cases, a 512-byte alignment is enough, however, when
-using XFS under Linux, it needs to be increased to 4K.
-</p><hr><a name="error_page"></a><strong>syntax</strong>:
-         <code>error_page
-        <code><i>code</i></code> ...
-        [<code>=</code>[<code><i>response</i></code>]]
-        <code><i>uri</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code>, <code>if in location</code><br><p>
-Defines the URI that will be shown for the specified errors.
-These directives are inherited from the previous level if and
-only if there are no
-<code>error_page</code>
-directives on
-the current level.
-A URI value can contain variables.
-</p><p>
-Example:
-<blockquote><pre>
-error_page 404         /404.html;
-error_page 502 503 504 /50x.html;
-error_page 403         http://example.com/forbidden.html;
-</pre></blockquote></p><p>
-Furthermore, it is possible to change the response code to another, for example:
-<blockquote><pre>
-error_page 404 =200 /empty.gif;
-</pre></blockquote></p><p>
-If an error response is processed by a proxied server, or a FastCGI server,
-and the server may return different response codes (e.g., 200, 302, 401
-or 404), it is possible to respond with a returned code:
-<blockquote><pre>
-error_page 404 = /404.php;
-</pre></blockquote></p><p>
-If there is no need to change URI during redirection it is possible to redirect
-error processing into a named location:
-<blockquote><pre>
-location / {
-    error_page 404 = @fallback;
-}
-
-location @fallback {
-    proxy_pass http://backend;
-}
-</pre></blockquote></p><hr><a name="if_modified_since"></a><strong>syntax</strong>:
-         <code>if_modified_since
-        <code>off</code> |
-        <code>exact</code> |
-        <code>before</code></code><br><strong>default</strong>:
-      <code>if_modified_since exact</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><strong>appeared in version</strong>:
-         0.7.24<p>
-Specifies how to compare modification time of a response
-with the time in the
-<code>If-Modified-Since</code>
-request header:
-
-<dl compact><dt><code>off</code></dt><dd>
-the
-<code>If-Modified-Since</code> request header is ignored (0.7.34);
-</dd><dt><code>exact</code></dt><dd>
-exact match;
-</dd><dt><code>before</code></dt><dd>
-modification time of a response is
-less than or equal to the time in the <code>If-Modified-Since</code>
-request header.
-</dd></dl></p><hr><a name="internal"></a><strong>syntax</strong>:
-         <code>internal</code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>location</code><br><p>
-Specifies that a given location can only be used for internal requests.
-For external requests, the client error
-404 (Not Found)
-is returned.
-Internal requests are the following:
-
-<ul><li>
-requests redirected by the <a href="#error_page">error_page</a> directive;
-</li><li>
-subrequests formed by the
-<code>include virtual</code>
-command of the module
-<a href="ngx_http_ssi_module.html">ngx_http_ssi_module</a>;
-</li><li>
-requests changed by the
-<a href="ngx_http_rewrite_module.html#rewrite">rewrite</a>
-directive of the module
-<a href="ngx_http_rewrite_module.html">ngx_http_rewrite_module</a>.
-</li></ul></p><p>
-Example:
-<blockquote><pre>
-error_page 404 /404.html;
-
-location /404.html {
-    internal;
-}
-</pre></blockquote></p><hr><a name="keepalive_requests"></a><strong>syntax</strong>:
-         <code>keepalive_requests <code><i>number</i></code></code><br><strong>default</strong>:
-      <code>keepalive_requests 100</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><strong>appeared in version</strong>:
-         0.8.0<p>
-Sets the maximum number of requests that can be
-made through one keep-alive connection.
-</p><hr><a name="keepalive_timeout"></a><strong>syntax</strong>:
-         <code>keepalive_timeout
-        <code><i>time</i></code>
-        [<code><i>time</i></code>]
-</code><br><strong>default</strong>:
-      <code>keepalive_timeout 75</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-The first argument sets a timeout during which a keep-alive
-client connection will stay open on the server side.
-The optional second argument sets a value in the
-&ldquo;<code>Keep-Alive: timeout=<code><i>time</i></code></code>&rdquo;
-response header.
-Two arguments may differ.
-</p><p>
-The
-&ldquo;<code>Keep-Alive: timeout=</code>&rdquo;
-is understood by Mozilla and Konqueror.
-MSIE will close keep-alive connection in about 60 seconds.
-</p><hr><a name="large_client_header_buffers"></a><strong>syntax</strong>:
-         <code>large_client_header_buffers <code><i>number size</i></code></code><br><strong>default</strong>:
-      <code>large_client_header_buffers 4 4k/8k</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code><br><p>
-Sets the maximum <code><i>number</i></code> and <code><i>size</i></code> of
-buffers used when reading large client request headers.
-A request line cannot exceed the size of one buffer, or the client error
-414 (Request-URI Too Large)
-is returned.
-A request header field cannot exceed the size of one buffer as well, or the
-client error
-400 (Bad Request)
-is returned.
-Buffers are allocated only on demand.
-By default, the buffer size is equal to one memory page size.
-It is either 4K or 8K, platform dependent.
-If after the end of request processing a connection is transitioned
-into the keep-alive state, these buffers are freed.
-</p><hr><a name="limit_except"></a><strong>syntax</strong>:
-         <code>limit_except <code><i>method</i></code> ... { ... }</code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>location</code><br><p>
-Limits allowed HTTP methods inside a location.
-The GET method also implies the HEAD method.
-Access to other methods can be limited using the
-<a href="ngx_http_access_module.html">ngx_http_access_module</a>
-and
-<a href="ngx_http_auth_basic_module.html">ngx_http_auth_basic_module</a>
-modules directives:
-<blockquote><pre>
-limit_except GET {
-    allow 192.168.1.0/32;
-    deny  all;
-}
-</pre></blockquote>
-Please note that this will limit access to all methods
-<strong>except</strong> GET and HEAD.
-</p><hr><a name="limit_rate"></a><strong>syntax</strong>:
-         <code>limit_rate <code><i>rate</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code>, <code>if in location</code><br><p>
-Rate limits the transmission of a response to a client.
-The <code><i>rate</i></code> is specified in bytes per second.
-
-The limit is per connection, so if a single client opens 2 connections,
-an overall rate will be 2x more than specified.
-</p><p>
-This directive is not applicable if one wants to rate limit
-a group of clients on the
-<a href="#server">server</a>
-level.
-If that is the case, the desired limit can be specified in the
-<code>$limit_rate</code>
-variable:
-<blockquote><pre>
-server {
-
-    if ($slow) {
-        set $limit_rate 4k;
-    }
-
-    ...
-}
-</pre></blockquote></p><hr><a name="limit_rate_after"></a><strong>syntax</strong>:
-         <code>limit_rate_after <code><i>size</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code>, <code>if in location</code><br><strong>appeared in version</strong>:
-         0.8.0<p>
-Sets the initial amount after which the further transmission
-of a response to a client will be rate limited.
-</p><p>
-Example:
-<blockquote><pre>
-location /flv/ {
-    flv;
-    limit_rate_after 500k;
-    limit_rate       50k;
-}
-</pre></blockquote></p><hr><a name="listen"></a><strong>syntax</strong>:
-         <code>listen
-        <code><i>address</i></code>[:<code><i>port</i></code>]
-        [<code>default</code> | <code>default_server</code>
-        [<code>backlog</code>=<code><i>number</i></code>]
-        [<code>rcvbuf</code>=<code><i>size</i></code>]
-        [<code>sndbuf</code>=<code><i>size</i></code>]
-        [<code>accept_filter</code>=<code><i>filter</i></code>]
-        [<code>deferred</code>]
-        [<code>bind</code>]
-        [<code>ipv6only</code>=<code>on</code>|<code>off</code>]
-        [<code>ssl</code>]]
-</code><br><code>       </code><code>listen
-        <code><i>port</i></code>
-        [<code>default</code> | <code>default_server</code>
-        [<code>backlog</code>=<code><i>number</i></code>]
-        [<code>rcvbuf</code>=<code><i>size</i></code>]
-        [<code>sndbuf</code>=<code><i>size</i></code>]
-        [<code>accept_filter</code>=<code><i>filter</i></code>]
-        [<code>deferred</code>]
-        [<code>bind</code>]
-        [<code>ipv6only</code>=<code>on</code>|<code>off</code>]
-        [<code>ssl</code>]]
-</code><br><strong>default</strong>:
-      <code>listen *:80 | *:8000</code><br><strong>context</strong>:
-      <code>server</code><br><p>
-Sets an <code><i>address</i></code> and a <code><i>port</i></code>, on which
-the server will accept requests.
-Only one of <code><i>address</i></code> or <code><i>port</i></code> can be
-specified.
-An <code><i>address</i></code> may also be a hostname, for example:
-<blockquote><pre>
-listen 127.0.0.1:8000;
-listen 127.0.0.1;
-listen 8000;
-listen *:8000;
-listen localhost:8000;
-</pre></blockquote>
-IPv6 addresses (0.7.36) are specified in square brackets:
-<blockquote><pre>
-listen [::]:8000;
-listen [fe80::1];
-</pre></blockquote></p><p>
-If only <code><i>address</i></code> is given, the port 80 is used.
-</p><p>
-If directive is not present then either the <code>*:80</code> is used
-if nginx runs with superuser privileges, or <code>*:8000</code> otherwise.
-</p><p>
-The <code>default</code> parameter, if present,
-will cause the server to become the default server for the specified
-<code><i>address</i></code>:<code><i>port</i></code> pair.
-If none of the directives have the <code>default</code>
-parameter then the first server with the
-<code><i>address</i></code>:<code><i>port</i></code> pair will be
-the default server for this pair.
-Starting from version 0.8.21 it is possible to use the
-<code>default_server</code>
-parameter.
-</p><p>
-A <code>listen</code> directive which has the <code>default</code>
-parameter can have several additional parameters specific to system calls
-<code>listen()</code> and <code>bind()</code>.
-Starting from version 0.8.21, these parameters can be specified in any
-<code>listen</code> directive, but only once for the given
-<code><i>address</i></code>:<code><i>port</i></code> pair.
-<dl compact><dt><code>backlog</code>=<code><i>number</i></code></dt><dd>
-sets the <code>backlog</code> parameter in the
-<code>listen()</code> call.
-By default, <code>backlog</code> equals -1 on FreeBSD
-and 511 on other platforms.
-</dd><dt><code>rcvbuf</code>=<code><i>size</i></code></dt><dd>
-sets the <code>SO_RCVBUF</code> parameter for the listening socket.
-</dd><dt><code>sndbuf</code>=<code><i>size</i></code></dt><dd>
-sets the <code>SO_SNDBUF</code> parameter for the listening socket.
-</dd><dt><code>accept_filter</code>=<code><i>filter</i></code></dt><dd>
-sets the name of the accept filter.
-This works only on FreeBSD, acceptable values are <code>dataready</code>
-and <code>httpready</code>.
-On receipt of the <code>SIGHUP</code> signal, an accept filter can only be
-changed in recent versions of FreeBSD, starting from 6.0, 5.4-STABLE
-and 4.11-STABLE.
-</dd><dt><code>deferred</code></dt><dd>
-instructs to use a deferred <code>accept()</code> on Linux
-using the <code>TCP_DEFER_ACCEPT</code> option.
-</dd><dt><code>bind</code></dt><dd>
-specifies to make a separate <code>bind()</code> call for a given
-<code><i>address</i></code>:<code><i>port</i></code> pair.
-This is because nginx will only <code>bind()</code> to
-<code>*</code>:<code><i>port</i></code>
-if there are several <code>listen</code> directives with
-the same port but different addresses, and one of the
-<code>listen</code> directives listens on all addresses
-for the given port (<code>*</code>:<code><i>port</i></code>).
-It should be noted that in this case a <code>getsockname()</code>
-system call will be made to determine an address that accepted a
-connection.
-If parameters <code>backlog</code>, <code>rcvbuf</code>,
-<code>sndbuf</code>, <code>accept_filter</code>, or
-<code>deferred</code> are used then for a given
-<code><i>address</i></code>:<code><i>port</i></code> pair
-a separate <code>bind()</code> call will always be made.
-</dd><dt><code>ipv6only</code>=<code>on</code>|<code>off</code></dt><dd>
-this parameter (0.7.42) sets the value of the <code>IPV6_V6ONLY</code>
-parameter for the listening socket.
-This parameter can only be set once on start.
-</dd><dt><code>ssl</code></dt><dd>
-this parameter (0.7.14) does not relate to system calls
-<code>listen()</code> and <code>bind()</code>, but allows to
-specify that all connections accepted on this port should work in
-the SSL mode.
-This allows for a more compact configuration for the server operating
-in both HTTP and HTTPS modes simultaneously.
-<blockquote><pre>
-listen 80;
-listen 443 default ssl;
-</pre></blockquote></dd></dl></p><p>
-Example:
-<blockquote><pre>
-listen 127.0.0.1 default accept_filter=dataready backlog=1024;
-</pre></blockquote></p><hr><a name="location"></a><strong>syntax</strong>:
-         <code>location [
-        <code>=</code> |
-	<code>~</code> |
-	<code>~*</code> |
-	<code>^~</code> |
-	<code>@</code>
-	] <code><i>uri</i></code>
-{ ... }</code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>server</code><br><p>
-Sets a configuration based on a request URI.
-A location can either be defined by a prefix string, or by a regular expression.
-Regular expressions are specified by prepending them with the
-&ldquo;<code>~*</code>&rdquo; prefix (for case-insensitive matching), or with the
-&ldquo;<code>~</code>&rdquo; prefix (for case-sensitive matching).
-To find a location matching a given request, nginx first checks
-locations defined using the prefix strings (prefix locations).
-Amongst them, the most specific one is searched.
-Then regular expressions are checked, in the order of their appearance
-in a configuration file.
-A search terminates on the first match, and its corresponding
-configuration is used.
-If no match with a regular expression location is found then a
-configuration of the most specific prefix location is used.
-</p><p>
-For case-insensitive operating systems such as Mac OS X and Cygwin,
-the string matching ignores a case (0.7.7).
-However, comparison is limited to one-byte locales.
-</p><p>
-Regular expressions can contain captures (0.7.40) that can later
-be used in other directives.
-</p><p>
-If the most specific prefix location has the &ldquo;<code>^~</code>&rdquo; prefix
-then regular expressions are not checked.
-</p><p>
-Also, using the &ldquo;<code>=</code>&rdquo; prefix it is possible to define
-an exact match of URI and location.
-If an exact match is found, the search terminates.
-For example, if a &ldquo;<code>/</code>&rdquo; request happens frequently,
-defining &ldquo;<code>location = /</code>&rdquo; will speed up the processing
-of these requests, as search terminates right after the first
-comparison.
-</p><p>
-In versions from 0.7.1 to 0.8.41, if a request matched the prefix
-location without the &ldquo;<code>=</code>&rdquo; and &ldquo;<code>^~</code>&rdquo;
-prefixes, the search also terminated and regular expressions were
-not checked.
-</p><p>
-Let's illustrate the above by example:
-<blockquote><pre>
-location = / {
-    [ configuration A ]
-}
-
-location / {
-    [ configuration B ]
-}
-
-location ^~ /images/ {
-    [ configuration C ]
-}
-
-location ~* \.(gif|jpg|jpeg)$ {
-    [ configuration D ]
-}
-</pre></blockquote>
-The &ldquo;<code>/</code>&rdquo; request will match configuration A,
-the &ldquo;<code>/documents/document.html</code>&rdquo; request will match
-configuration B,
-the &ldquo;<code>/images/1.gif</code>&rdquo; request will match configuration C, and
-the &ldquo;<code>/documents/1.jpg</code>&rdquo; request will match configuration D.
-</p><p>
-The &ldquo;<code>@</code>&rdquo; prefix defines a named location.
-Such a location is not used for a regular request processing, but instead
-used for request redirection.
-</p><hr><a name="log_not_found"></a><strong>syntax</strong>:
-         <code>log_not_found <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>log_not_found on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables logging of errors about not found files into the
-<a href="../ngx_core_module.html#error_log">error_log</a>.
-</p><hr><a name="log_subrequest"></a><strong>syntax</strong>:
-         <code>log_subrequest <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>log_subrequest off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables logging of subrequests into the
-<a href="ngx_http_log_module.html#access_log">access_log</a>.
-</p><hr><a name="merge_slashes"></a><strong>syntax</strong>:
-         <code>merge_slashes <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>merge_slashes on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code><br><p>
-Enables or disables compression of two or more adjacent slashes
-in a URI into a single slash.
-</p><p>
-Note that compression is essential for the correct prefix string
-and regular expressions location matching.
-Without it, the &ldquo;<code>//scripts/one.php</code>&rdquo; request would not match
-<blockquote><pre>
-location /scripts/ {
-    ...
-}
-</pre></blockquote>
-and might be processed as a static file,
-so it gets converted to &ldquo;<code>/scripts/one.php</code>&rdquo;.
-</p><p>
-Turning the compression <code>off</code> can become necessary if a URI
-contains base64-encoded names, since base64 uses the "/" character internally.
-However, for security considerations, it is better to avoid turning off
-the compression.
-</p><p>
-If a directive is specified on the
-<a href="#server">server</a>
-level, which is also a default server, its value will cover
-all virtual servers listening on the same address and port.
-</p><hr><a name="msie_padding"></a><strong>syntax</strong>:
-         <code>msie_padding <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>msie_padding on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables adding of comments to responses with status
-greater than 400 for MSIE clients, to pad the response size to 512 bytes.
-</p><hr><a name="msie_refresh"></a><strong>syntax</strong>:
-         <code>msie_refresh <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>msie_refresh off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables issuing refreshes instead of redirects, for MSIE clients.
-</p><hr><a name="open_file_cache"></a><strong>syntax</strong>:
-         <code>open_file_cache
-<code>max</code>=<code><i>N</i></code>
-[<code>inactive</code>=<code><i>time</i></code>] |
-<code>off</code></code><br><strong>default</strong>:
-      <code>open_file_cache off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Configures a cache that can store:
-<ul><li>
-open file descriptors, their sizes and modification times;
-</li><li>
-directory lookups;
-</li><li>
-file lookup errors, such as "file not found", "no read permission",
-and so on.
-Caching of errors should be enabled separately by the
-<a href="#open_file_cache_errors">open_file_cache_errors</a>
-directive.
-</li></ul></p><p>
-The directive has the following parameters:
-<dl compact><dt><code>max</code></dt><dd>
-sets the maximum number of elements in the cache;
-on cache overflow the least recently used (LRU) elements get removed;
-</dd><dt><code>inactive</code></dt><dd>
-defines a time, after which the element gets removed from the cache
-if there were no accesses to it during this time;
-by default, it is 60 seconds;
-</dd><dt><code>off</code></dt><dd>
-disables the cache.
-</dd></dl></p><p>
-Example:
-<blockquote><pre>
-open_file_cache          max=1000 inactive=20s;
-open_file_cache_valid    30s;
-open_file_cache_min_uses 2;
-open_file_cache_errors   on;
-</pre></blockquote></p><hr><a name="open_file_cache_errors"></a><strong>syntax</strong>:
-         <code>open_file_cache_errors <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>open_file_cache_errors off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables caching of file lookup errors by the
-<a href="#open_file_cache">open_file_cache</a>.
-</p><hr><a name="open_file_cache_min_uses"></a><strong>syntax</strong>:
-         <code>open_file_cache_min_uses <code><i>number</i></code></code><br><strong>default</strong>:
-      <code>open_file_cache_min_uses 1</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets the minimum <code><i>number</i></code> of file accesses during
-the period configured by the <code>inactive</code> parameter
-of the <a href="#open_file_cache">open_file_cache</a> directive,
-after which a file descriptor will remain open in the cache.
-</p><hr><a name="open_file_cache_valid"></a><strong>syntax</strong>:
-         <code>open_file_cache_valid <code><i>time</i></code></code><br><strong>default</strong>:
-      <code>open_file_cache_valid 60</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets a time after which
-<a href="#open_file_cache">open_file_cache</a>
-elements should be validated.
-</p><hr><a name="optimize_server_names"></a><strong>syntax</strong>:
-         <code>optimize_server_names <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>optimize_server_names on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code><br><p>
-This directive is obsolete.
-</p><p>
-Enables or disables optimization of hostname checking in name-based
-virtual servers.
-In particular, the checking affects hostnames used in redirects.
-If optimization is enabled, and all name-based servers listening on
-the same address:port pair have identical configuration, then
-names are not checked during request processing, and the first
-server name is used in redirects.
-In case redirects should use hostnames sent by clients,
-optimization needs to be disabled.
-</p><hr><a name="port_in_redirect"></a><strong>syntax</strong>:
-         <code>port_in_redirect <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>port_in_redirect on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables specifying the port in redirects issued by nginx.
-</p><hr><a name="read_ahead"></a><strong>syntax</strong>:
-         <code>read_ahead <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>read_ahead 0</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets the amount of pre-reading when working with files, in the kernel.
-</p><p>
-On Linux, the
-<code>posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)</code>
-system call is used, so the <code><i>size</i></code> argument is ignored.
-</p><p>
-On FreeBSD, the
-<code>fcntl(O_READAHEAD,</code><code><i>size</i></code><code>)</code>
-system call is used, supported in FreeBSD 9.0-CURRENT.
-FreeBSD 7 needs to be
-<a href="http://sysoev.ru/freebsd/patch.readahead.txt">patched</a>.
-</p><hr><a name="recursive_error_pages"></a><strong>syntax</strong>:
-         <code>recursive_error_pages <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>recursive_error_pages off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables doing several redirects using the
-<a href="#error_page">error_page</a>
-directive.
-</p><hr><a name="reset_timedout_connection"></a><strong>syntax</strong>:
-         <code>reset_timedout_connection
-        <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>reset_timedout_connection off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables resetting of timed out connections.
-The reset is performed as follows: before closing a socket, the
-<code>SO_LINGER</code>
-option is set on it with a timeout value of 0.
-When the socket is closed, a client is sent TCP RST, and all memory
-occupied by this socket is freed.
-This avoids keeping of an already closed socket with filled buffers
-for a long time, in a FIN_WAIT1 state.
-</p><p>
-It should be noted that timed out keep-alive connections are still
-closed normally.
-</p><hr><a name="resolver"></a><strong>syntax</strong>:
-         <code>resolver <code><i>address</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets the <code><i>address</i></code> of a name server, for example:
-<blockquote><pre>
-resolver 127.0.0.1;
-</pre></blockquote></p><hr><a name="resolver_timeout"></a><strong>syntax</strong>:
-         <code>resolver_timeout <code><i>time</i></code></code><br><strong>default</strong>:
-      <code>resolver_timeout 30s</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets a timeout for name resolution, for example:
-<blockquote><pre>
-resolver_timeout 5s;
-</pre></blockquote></p><hr><a name="root"></a><strong>syntax</strong>:
-         <code>root <code><i>path</i></code></code><br><strong>default</strong>:
-      <code>root html</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code>, <code>if in location</code><br><p>
-Sets the root directory for requests.
-For example, with the following configuration
-<blockquote><pre>
-location /i/ {
-    root /data/w3;
-}
-</pre></blockquote>&ldquo;<code>/i/top.gif</code>&rdquo; will be responded
-with the file
-&ldquo;<code>/data/w3/i/top.gif</code>&rdquo;.
-</p><p>
-The <code><i>path</i></code> value can contain variables.
-</p><p>
-A path to the file is constructed by merely adding a URI to the value
-of the <code>root</code> directive.
-If a URI need to be modified, the
-<a href="#alias">alias</a> directive should be used.
-</p><hr><a name="satisfy"></a><strong>syntax</strong>:
-         <code>satisfy <code>all</code> | <code>any</code></code><br><strong>default</strong>:
-      <code>satisfy all</code><br><strong>context</strong>:
-      <code>location</code><br><p>
-Allows access if any of the
-<a href="ngx_http_access_module.html">ngx_http_access_module</a>
-or <a href="ngx_http_auth_basic_module.html">ngx_http_auth_basic_module</a>
-modules grant access.
-<blockquote><pre>
-location / {
-    satisfy any;
-
-    allow 192.168.1.0/32;
-    deny  all;
-
-    auth_basic           "closed site";
-    auth_basic_user_file conf/htpasswd;
-}
-</pre></blockquote></p><hr><a name="satisfy_any"></a><strong>syntax</strong>:
-         <code>satisfy_any <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>satisfy_any off</code><br><strong>context</strong>:
-      <code>location</code><br><p>
-This directive was renamed to the <a href="#satisfy">satisfy</a> directive.
-</p><hr><a name="send_timeout"></a><strong>syntax</strong>:
-         <code>send_timeout <code><i>time</i></code></code><br><strong>default</strong>:
-      <code>send_timeout 60</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets a timeout for transmitting a response to the client.
-A timeout is only set between two successive write operations,
-not for the transmission of the whole response.
-If a client does not receive anything within this time,
-a connection is closed.
-</p><hr><a name="sendfile"></a><strong>syntax</strong>:
-         <code>sendfile <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>sendfile off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables the use of
-<code>sendfile()</code>.
-</p><hr><a name="server"></a><strong>syntax</strong>:
-         <code>server { ... }</code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>http</code><br><p>
-Sets a configuration for the virtual server.
-There is no clean separation between IP-based (based on the IP address)
-and name-based (based on the <code>Host</code> request header field)
-virtual servers.
-Instead, the <a href="#listen">listen</a> directives describe all
-addresses and ports that should accept connections for a server, and the
-<a href="#server_name">server_name</a> directive lists all server names.
-An example configuration is provided in the
-<a href="../virtual_hosts.html">
-Setting Up Virtual Servers</a> document.
-</p><hr><a name="server_name"></a><strong>syntax</strong>:
-         <code>server_name <code><i>name</i></code> ...</code><br><strong>default</strong>:
-      <code>server_name hostname</code><br><strong>context</strong>:
-      <code>server</code><br><p>
-Sets names of the virtual server, for example:
-<blockquote><pre>
-server {
-    server_name example.com www.example.com;
-}
-</pre></blockquote></p><p>
-The first name becomes a primary server name.
-By default, the machine's hostname is used.
-Server names can include an asterisk (&ldquo;<code>*</code>&rdquo;)
-to replace the first or last part of a name:
-<blockquote><pre>
-server {
-    server_name example.com *.example.com www.example.*;
-}
-</pre></blockquote></p><p>
-The first two of the above mentioned names can be combined:
-<blockquote><pre>
-server {
-    server_name .example.com;
-}
-</pre></blockquote></p><p>
-It is also possible to use regular expressions in server names,
-prepending the name with a tilde (&ldquo;<code>~</code>&rdquo;):
-<blockquote><pre>
-server {
-    server_name www.example.com ~^www\d+\.example\.com$;
-}
-</pre></blockquote></p><p>
-Regular expressions can contain captures (0.7.40) that can later
-be used in other directives:
-<blockquote><pre>
-server {
-    server_name ~^(www\.)?(.+)$;
-
-    location / {
-        root /sites/$2;
-    }
-}
-
-server {
-    server_name _;
-
-    location / {
-        root /sites/default;
-    }
-}
-</pre></blockquote></p><p>
-Starting from version 0.8.25, named captures in regular expressions create
-variables that can later be used in other directives:
-<blockquote><pre>
-server {
-    server_name ~^(www\.)?(?&lt;domain&gt;.+)$;
-
-    location / {
-        root /sites/$domain;
-    }
-}
-
-server {
-    server_name _;
-
-    location / {
-        root /sites/default;
-    }
-}
-</pre></blockquote></p><p>
-Starting from version 0.7.11, it is possible to specify an empty name:
-<blockquote><pre>
-server {
-    server_name www.example.com "";
-}
-</pre></blockquote>
-It allows this server to process requests without the <code>Host</code>
-header, instead of the default server for the given address:port pair.
-</p><p>
-The name checking order is as follows:
-<ol><li>
-full names
-</li><li>
-names with the prefix mask, e.g. &ldquo;<code>*.example.com</code>&rdquo;</li><li>
-names with the suffix mask, e.g. &ldquo;<code>mail.*</code>&rdquo;</li><li>
-regular expressions
-</li></ol></p><hr><a name="server_name_in_redirect"></a><strong>syntax</strong>:
-         <code>server_name_in_redirect <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>server_name_in_redirect on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables the use of the primary server name, specified by the
-<a href="#server_name">server_name</a>
-directive, in redirects issued by nginx.
-When disabled, the name from the <code>Host</code> request header field
-is used.
-If this field is not present, an IP address of the server is used.
-</p><hr><a name="server_names_hash_max_size"></a><strong>syntax</strong>:
-         <code>server_names_hash_max_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>server_names_hash_max_size 512</code><br><strong>context</strong>:
-      <code>http</code><br><p>
-Sets the maximum <code><i>size</i></code> of the server names hash tables.
-For more information, please refer to
-<a href="../hash.html">Setting Up Hashes</a>.
-</p><hr><a name="server_names_hash_bucket_size"></a><strong>syntax</strong>:
-         <code>server_names_hash_bucket_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>server_names_hash_bucket_size 32/64/128</code><br><strong>context</strong>:
-      <code>http</code><br><p>
-Sets the bucket size for the server names hash tables.
-Default value depends on the size of the processor's cache line.
-For more information, please refer to
-<a href="../hash.html">Setting Up Hashes</a>.
-</p><hr><a name="server_tokens"></a><strong>syntax</strong>:
-         <code>server_tokens <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>server_tokens on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables emitting of nginx version in error messages and in the
-<code>Server</code> response header field.
-</p><hr><a name="tcp_nodelay"></a><strong>syntax</strong>:
-         <code>tcp_nodelay <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>tcp_nodelay on</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables the use of the <code>TCP_NODELAY</code> option.
-The option is enabled only when a connection is transitioned into the
-keep-alive state.
-</p><hr><a name="tcp_nopush"></a><strong>syntax</strong>:
-         <code>tcp_nopush <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>tcp_nopush off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Enables or disables the use of
-the <code>TCP_NOPUSH</code> socket option on FreeBSD
-or the <code>TCP_CORK</code> socket option on Linux.
-Opitons are enables only when <a href="#sendfile">sendfile</a> is used.
-Enabling the option allows to
-<ul><li>
-send the response header and the beginning of a file in one packet,
-on Linux and FreeBSD 4.*;
-</li><li>
-send a file in full packets.
-</li></ul></p><hr><a name="try_files"></a><strong>syntax</strong>:
-         <code>try_files
-        <code><i>file</i></code> ...
-	<code><i>uri</i></code></code><br><code>       </code><code>try_files
-        <code><i>file</i></code> ...
-        =<code><i>code</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>location</code><br><p>
-Checks the existence of files in the specified order, and uses
-the first found file for request processing; the processing
-is performed in this location's context.
-It is possible to check the directory existence by specifying
-the slash at the end of a name, e.g. &ldquo;<code>$uri/</code>&rdquo;.
-If none of the files were found, an internal redirect to the
-<code><i>uri</i></code> specified by the last argument is made.
-As of version 0.7.51, the last argument can also be a
-<code><i>code</i></code>:
-<blockquote><pre>
-location / {
-    try_files $uri $uri/index.html $uri.html =404;
-}
-</pre></blockquote></p><p>
-Example when proxying Mongrel:
-<blockquote><pre>
-location / {
-    try_files /system/maintenance.html
-              $uri $uri/index.html $uri.html
-              @mongrel;
-}
-
-location @mongrel {
-    proxy_pass http://mongrel;
-}
-</pre></blockquote></p><p>
-Example for Drupal/FastCGI:
-<blockquote><pre>
-location / {
-    try_files $uri $uri/ @drupal;
-}
-
-location ~ \.php$ {
-    try_files $uri @drupal;
-
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
-    fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
-    fastcgi_param QUERY_STRING    $args;
-
-    ... other fastcgi_param's
-}
-
-location @drupal {
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
-    fastcgi_param SCRIPT_NAME     /index.php;
-    fastcgi_param QUERY_STRING    q=$uri&amp;$args;
-
-    ... other fastcgi_param's
-}
-</pre></blockquote>
-In the following example,
-<blockquote><pre>
-location / {
-    try_files $uri $uri/ @drupal;
-}
-</pre></blockquote>
-the <code>try_files</code> directive is equivalent to
-<blockquote><pre>
-location / {
-    error_page 404 = @drupal;
-    log_not_found off;
-}
-</pre></blockquote>
-And here,
-<blockquote><pre>
-location ~ \.php$ {
-    try_files $uri @drupal;
-
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
-
-    ...
-}
-</pre></blockquote><code>try_files</code> checks the existence of the PHP file
-before passing the request to the FastCGI server.
-</p><p>
-Example for Wordpress and Joomla:
-<blockquote><pre>
-location / {
-    try_files $uri $uri/ @wordpress;
-}
-
-location ~ \.php$ {
-    try_files $uri @wordpress;
-
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
-    ... other fastcgi_param's
-}
-
-location @wordpress {
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
-    ... other fastcgi_param's
-}
-</pre></blockquote></p><hr><a name="types"></a><strong>syntax</strong>:
-         <code>types { ... }</code><br><strong>default</strong>:
-      <code>see below</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Maps file name extensions to MIME types of responses.
-Several extensions can map to one type.
-The following mappings are configured by default:
-<blockquote><pre>
-types {
-    text/html  html;
-    image/gif  gif;
-    image/jpeg jpg;
-}
-</pre></blockquote></p><p>
-A sufficiently full mapping table is distributed with nginx in the
-<code>conf/mime.types</code> file.
-</p><p>
-To make a particular location emit the
-&ldquo;<code>application/octet-stream</code>&rdquo;
-MIME type for all requests, try the following:
-<blockquote><pre>
-location /download/ {
-    types        { }
-    default_type application/octet-stream;
-}
-</pre></blockquote></p><hr><a name="underscores_in_headers"></a><strong>syntax</strong>:
-         <code>underscores_in_headers <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>underscores_in_headers off</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code><br><p>
-Enables or disables the use of underscores in client request header fields.
-</p><a name="variables"></a><center><h4>Embedded Variables</h4></center><p>
-The module <code>ngx_http_core_module</code> supports embedded variables with
-names matching those of the Apache Server.
-First of all, these are variables representing client request header
-fields, such as, <code>$http_user_agent</code>, <code>$http_cookie</code>,
-and so on.
-It also supports other variables:
-<dl compact><dt><code>$args</code></dt><dd>
-arguments in the request line
-</dd><dt><code>$arg_</code><code><i>name</i></code></dt><dd>
-argument <code><i>name</i></code> in the request line
-</dd><dt><code>$binary_remote_addr</code></dt><dd>
-client address in a binary form, value's length is always 4 bytes
-</dd><dt><code>$content_length</code></dt><dd><code>Content-Length</code> request header field
-</dd><dt><code>$content_type</code></dt><dd><code>Content-Type</code> request header field
-</dd><dt><code>$cookie_</code><code><i>name</i></code></dt><dd>
-the <code><i>name</i></code> cookie
-</dd><dt><code>$document_root</code></dt><dd><a href="#root">root</a> directive's value for the current request
-</dd><dt><code>$document_uri</code></dt><dd>
-same as <code>$uri</code></dd><dt><code>$host</code></dt><dd><code>Host</code> request header field,
-or the server name matching a request if this field is not present
-</dd><dt><code>$hostname</code></dt><dd>
-host name
-</dd><dt><code>$http_</code><code><i>name</i></code></dt><dd>
-the <code><i>name</i></code> request header field
-</dd><dt><code>$is_args</code></dt><dd>&ldquo;<code>?</code>&rdquo; if a request line has arguments,
-or an empty string otherwise
-</dd><dt><code>$limit_rate</code></dt><dd>
-allows for connection rate limiting
-</dd><dt><code>$pid</code></dt><dd>
-PID of the worker process
-</dd><dt><code>$request_method</code></dt><dd>
-request method, usually
-&ldquo;<code>GET</code>&rdquo; or &ldquo;<code>POST</code>&rdquo;</dd><dt><code>$remote_addr</code></dt><dd>
-client address
-</dd><dt><code>$remote_port</code></dt><dd>
-client port
-</dd><dt><code>$remote_user</code></dt><dd>
-user name supplied with the Basic authentication
-</dd><dt><code>$realpath_root</code></dt><dd><a href="#root">root</a> directive's value
-for the current request, with all symbolic links resolved to real paths
-</dd><dt><code>$request_filename</code></dt><dd>
-file path for the current query, based on the
-<a href="#root">root</a> and <a href="#alias">alias</a>
-directives, and the request URI
-</dd><dt><code>$request_body</code></dt><dd>
-request body
-<p>
-The variable's value is made available in locations
-processed by the
-<a href="ngx_http_proxy_module.html#proxy_pass">proxy_pass</a>
-and
-<a href="ngx_http_fastcgi_module.html#fastcgi_pass">fastcgi_pass</a>
-directives.
-</p></dd><dt><code>$request_body_file</code></dt><dd>
-name of a temporary file with the request body
-<p>
-At the end of processing, the file needs to be removed.
-To always write a request body to a file,
-<a href="#client_body_in_file_only">client_body_in_file_only on</a>
-needs be specified.
-When passing the name of a temporary file in a proxied request,
-or in a request to a FastCGI server,
-passing of the request body should be disabled by the
-<a href="ngx_http_proxy_module.html#proxy_pass_request_body">proxy_pass_request_body</a>
-and
-<a href="ngx_http_fastcgi_module.html#fastcgi_pass_request_body">fastcgi_pass_request_body</a>
-directives, respectively.
-</p></dd><dt><code>$request_uri</code></dt><dd>
-full original request URI (with arguments)
-</dd><dt><code>$query_string</code></dt><dd>
-same as <code>$args</code></dd><dt><code>$scheme</code></dt><dd>
-request scheme, &ldquo;<code>http</code>&rdquo; or &ldquo;<code>https</code>&rdquo;</dd><dt><code>$server_protocol</code></dt><dd>
-request protocol, usually
-&ldquo;<code>HTTP/1.0</code>&rdquo;
-or
-&ldquo;<code>HTTP/1.1</code>&rdquo;</dd><dt><code>$server_addr</code></dt><dd>
-an address of the server which accepted a request
-<p>
-Computing a value of this variable usually requires one system call.
-To avoid a system call, the <code>listen</code> directives
-must specify addresses and use the <code>bind</code> parameter
-</p></dd><dt><code>$server_name</code></dt><dd>
-name of the server which accepted a request
-</dd><dt><code>$server_port</code></dt><dd>
-port of the server which accepted a request
-</dd><dt><code>$uri</code></dt><dd>
-current URI in request
-<p>
-It may differ from an original, e.g. when doing internal redirects,
-or when using index files.
-</p></dd></dl></p></body></html>
diff --git a/docs/html/http/ngx_http_mp4_module.html b/docs/html/http/ngx_http_mp4_module.html
deleted file mode 100644
index 1435ef3..0000000
--- a/docs/html/http/ngx_http_mp4_module.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>HTTP MP4 Module</title></head><body><center><h3>HTTP MP4 Module</h3></center><center><h4>Summary</h4></center><p>
-The module <code>ngx_http_mp4_module</code> provides pseudo-streaming
-server-side support for H.264/AAC files typically having filename extensions
-<code>.mp4</code>, <code>.m4v</code>,
-and <code>.m4a</code>.
-</p><p>
-Pseudo-streaming works in alliance with conformant Flash players.
-A player sends an HTTP request to the server with a start time
-argument in the request URI’s query string (named simply
-<code>start</code>
-and specified in seconds), and the server responds with a stream
-so that its start position corresponds to the requested time,
-for example:
-<blockquote><pre>
-http://example.com/elephants_dream.mp4?start=238.88
-</pre></blockquote>
-This allows for a random seeking at any time, or starting playback
-in the middle of a timeline.
-</p><p>
-To support seeking, H.264-based formats store the metadata
-in the so-called “moov atom.”
-It is a part of the file that holds the index information for the
-whole file.
-</p><p>
-To start playback, a player first needs to read metadata.
-This is done by sending a special request with the
-<code>start=0</code>
-argument.  Many encoding software will insert the metadata at
-the end of the file.  This is bad for pseudo-streaming:
-the metadata needs to be located at the beginning of the file,
-or else the entire file will have to be downloaded before it
-starts playing.  If a file is well-formed (with metadata at the
-beginning of a file), nginx just sends back the contents of a file.
-Otherwise, it has to read the file and prepare a new stream so that
-metadata comes before media data.
-This involves some CPU, memory, and disk I/O overhead,
-so it is a good idea to
-<a href="http://flowplayer.org/plugins/streaming/pseudostreaming.html#prepare">
-prepare an original file for pseudo-streaming</a>,
-rather than having nginx do this on every such request.
-</p><p>
-For a matching request with a non-zero
-<code>start</code>
-argument, nginx will read metadata from the file, prepare the
-stream starting from the requested offset, and send it to a client.
-This has the same overhead as described above.
-</p><p>
-If a matching request does not include the
-<code>start</code>
-argument, there is no overhead, and the file is just sent as a static resource.
-Some players also support byte-range requests, and thus do not require
-this module at all.
-</p><p>
-This module is not built by default, it should be enabled with the
-<code>--with-http_mp4_module</code>
-configuration parameter.
-
-If you were using the third-party mp4 module, be sure to disable it.
-</p><p>
-A similar pseudo-streaming support for FLV files is provided by the module
-<a href="ngx_http_flv_module.html">ngx_http_flv_module</a>.
-</p><a name="example"></a><center><h4>Example Configuration</h4></center><p><blockquote><pre>
-location /video/ {
-    mp4;
-    mp4_buffer_size     1m;
-    mp4_max_buffer_size 5m;
-}
-</pre></blockquote></p><a name="directives"></a><center><h4>Directives</h4></center><hr><a name="mp4"></a><strong>syntax</strong>:
-         <code>mp4</code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>location</code><br><p>
-Turns on module processing in a surrounding location.
-</p><hr><a name="mp4_buffer_size"></a><strong>syntax</strong>:
-         <code>mp4_buffer_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>mp4_buffer_size 512K</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-Sets the initial size of a memory buffer used to process MP4 files.
-</p><hr><a name="mp4_max_buffer_size"></a><strong>syntax</strong>:
-         <code>mp4_max_buffer_size <code><i>size</i></code></code><br><strong>default</strong>:
-      <code>mp4_max_buffer_size 10M</code><br><strong>context</strong>:
-      <code>http</code>, <code>server</code>, <code>location</code><br><p>
-During metadata processing, a larger buffer may become necessary.
-Its size cannot exceed the specified <code><i>size</i></code>,
-or else nginx will return the server error
-500 (Internal Server Error),
-and log the following:
-<blockquote><pre>
-"/some/movie/file.mp4" mp4 moov atom is too large:
-12583268, you may want to increase mp4_max_buffer_size
-</pre></blockquote></p></body></html>
diff --git a/docs/html/ngx_core_module.html b/docs/html/ngx_core_module.html
deleted file mode 100644
index 4c5e8d8..0000000
--- a/docs/html/ngx_core_module.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Core Module</title></head><body><center><h3>Core Module</h3></center><a name="example"></a><center><h4>Example Configuration</h4></center><p><blockquote><pre>
-user www www;
-worker_processes 2;
-
-error_log /var/log/nginx-error.log info;
-
-events {
-    use kqueue;
-    worker_connections 2048;
-}
-
-...
-</pre></blockquote></p><a name="directives"></a><center><h4>Directives</h4></center><hr><a name="daemon"></a><strong>syntax</strong>:
-         <code>daemon <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>daemon on</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Determines whether nginx should become a daemon.
-Mainly used during development.
-</p><hr><a name="env"></a><strong>syntax</strong>:
-         <code>env <code><i>VAR</i></code>[=<code><i>VALUE</i></code>]</code><br><strong>default</strong>:
-      <code>env TZ</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Allows to limit a set of environment variables, change their values,
-or create new environment variables, for the following cases:
-<ul><li>
-variable inheritance during a
-<a href="control.html#upgrade">live upgrade</a>
-of an executable file;
-</li><li>
-use of variables by the module
-<a href="http/ngx_http_perl_module.html">ngx_http_perl_module</a>;
-</li><li>
-use of variables by worker processes.
-Please bear in mind that controlling system libraries in this way
-is not always possible as it is not uncommon for libraries to check
-variables only during initialization, well before they can be set
-using this directive.
-An exception from this is an above mentioned
-<a href="control.html#upgrade">live upgrade</a>
-of an executable file.
-</li></ul></p><p>
-The TZ variable is always inherited and made available to the module
-<a href="http/ngx_http_perl_module.html">ngx_http_perl_module</a>,
-unless configured explicitly.
-</p><p>
-Usage example:
-<blockquote><pre>
-env MALLOC_OPTIONS;
-env PERL5LIB=/data/site/modules;
-env OPENSSL_ALLOW_PROXY_CERTS=1;
-</pre></blockquote></p><hr><a name="include"></a><strong>syntax</strong>:
-         <code>include <code><i>file</i></code> | <code><i>mask</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <strong>any</strong><br><p>
-Includes another <code><i>file</i></code>, or files matching the
-specified <code><i>mask</i></code>, into configuration.
-Included files should consist of
-syntactically correct directives and blocks.
-</p><p>
-Usage example:
-<blockquote><pre>
-include mime.types;
-include vhosts/*.conf;
-</pre></blockquote></p><hr><a name="master_process"></a><strong>syntax</strong>:
-         <code>master_process <code>on</code> | <code>off</code></code><br><strong>default</strong>:
-      <code>master_process on</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Determines whether worker processes are started.
-This directive is intended for nginx developers.
-</p><hr><a name="pid"></a><strong>syntax</strong>:
-         <code>pid <code><i>file</i></code></code><br><strong>default</strong>:
-      <code>pid nginx.pid</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Defines a <code><i>file</i></code> which will store the process ID of the main process.
-</p><hr><a name="ssl_engine"></a><strong>syntax</strong>:
-         <code>ssl_engine <code><i>device</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>main</code><br><p>
-Defines the name of the hardware SSL accelerator.
-</p><hr><a name="user"></a><strong>syntax</strong>:
-         <code>user <code><i>user</i></code> [<code><i>group</i></code>]</code><br><strong>default</strong>:
-      <code>user nobody nobody</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Defines <code><i>user</i></code> and <code><i>group</i></code>
-credentials used by worker processes.
-If <code><i>group</i></code> is omitted, a group whose name equals
-that of <code><i>user</i></code> is used.
-</p><hr><a name="timer_resolution"></a><strong>syntax</strong>:
-         <code>timer_resolution <code><i>interval</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>main</code><br><p>
-Reduces timer resolution in worker processes, thus reducing the
-number of <code>gettimeofday()</code> system calls made.
-By default, <code>gettimeofday()</code> is called each time
-on receiving a kernel event.
-With reduced resolution, <code>gettimeofday()</code> is only
-called once per specified <code><i>interval</i></code>.
-</p><p>
-Example:
-<blockquote><pre>
-timer_resolution 100ms;
-</pre></blockquote></p><p>
-An internal implementation of interval depends on the method used:
-<ul><li>
-an <code>EVFILT_TIMER</code> filter if <code>kqueue</code> is used;
-</li><li><code>timer_create()</code> if <code>eventport</code> is used;
-</li><li><code>setitimer()</code> otherwise.
-</li></ul></p><hr><a name="worker_rlimit_core"></a><strong>syntax</strong>:
-         <code>worker_rlimit_core <code><i>size</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>main</code><br><p>
-Changes the limit on the largest size of a core file
-(<code>RLIMIT_CORE</code>) for worker processes.
-Used to increase the limit without restarting the main process.
-</p><hr><a name="worker_rlimit_nofile"></a><strong>syntax</strong>:
-         <code>worker_rlimit_nofile <code><i>number</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>main</code><br><p>
-Changes the limit on the maximum number of open files
-(<code>RLIMIT_NOFILE</code>) for worker processes.
-Used to increase the limit without restarting the main process.
-</p><hr><a name="worker_priority"></a><strong>syntax</strong>:
-         <code>worker_priority <code><i>number</i></code></code><br><strong>default</strong>:
-      <code>worker_priority 0</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Defines a scheduling priority for worker processes like is
-done by the <code>nice</code>: a negative
-<code><i>number</i></code>
-means higher priority.
-Allowed range normally varies from -20 to 20.
-</p><p>
-Example:
-<blockquote><pre>
-worker_priority -10;
-</pre></blockquote></p><hr><a name="worker_processes"></a><strong>syntax</strong>:
-         <code>worker_processes <code><i>number</i></code></code><br><strong>default</strong>:
-      <code>worker_processes 1</code><br><strong>context</strong>:
-      <code>main</code><br><p>
-Defines the number of worker processes.
-</p><hr><a name="working_directory"></a><strong>syntax</strong>:
-         <code>working_directory <code><i>directory</i></code></code><br><strong>default</strong>:
-      <strong>none</strong><br><strong>context</strong>:
-      <code>main</code><br><p>
-Defines a current working directory for a worker process.
-It is primarily used when writing a core-file, in which case
-a working process should have write permission for the
-specified directory.
-</p></body></html>
diff --git a/docs/xml/http/ngx_http_core_module.xml b/docs/xml/http/ngx_http_core_module.xml
deleted file mode 100644
index 6ce4586..0000000
--- a/docs/xml/http/ngx_http_core_module.xml
+++ /dev/null
@@ -1,2194 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE module SYSTEM "../../dtd/module.dtd">
-
-<module name="HTTP Core Module" id="http_core_module">
-
-<section id="directives" name="Directives">
-
-<directive name="aio" appeared-in="0.8.11">
-<syntax>aio
-        <value>on</value> |
-        <value>off</value> |
-        <value>sendfile</value>
-</syntax>
-<default>aio off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables the use of asynchronous file I/O (AIO)
-on FreeBSD and Linux.
-</para>
-
-<para>
-On FreeBSD, AIO is usable starting from FreeBSD&nbsp;4.3.
-AIO can either be linked statically into a kernel:
-<example>
-options VFS_AIO
-</example>
-or loaded dynamically as a kernel loadable module:
-<example>
-kldload aio
-</example>
-</para>
-
-<para>
-In FreeBSD versions 5 and 6, enabling AIO statically, or dynamically
-when booting the kernel, will cause the entire networking subsystem
-to use the Giant lock that can impact overall performance negatively.
-This limitation has been removed in FreeBSD&nbsp;6.4-STABLE in 2009, and in
-FreeBSD&nbsp;7.
-However, starting from FreeBSD&nbsp;5.3 it is possible to enable AIO
-without the penalty of running the networking subsystem under a
-Giant lock&mdash;for this to work, the AIO module needs to be loaded
-after the kernel has booted.
-In this case, the following message will appear in
-<pathname>/var/log/messages</pathname>
-<example>
-WARNING: Network stack Giant-free, but aio requires Giant.
-Consider adding 'options NET_WITH_GIANT' or setting debug.mpsafenet=0
-</example>
-and can safely be ignored.
-<note>
-The requirement to use the Giant lock with AIO is related to the
-fact that FreeBSD supports asynchronous calls
-<c-func>aio_read</c-func>
-and
-<c-func>aio_write</c-func>
-when working with sockets.
-However, since nginx only uses AIO for disk I/O, no problems should arise.
-</note>
-</para>
-
-<para>
-For AIO to work,
-<link id="sendfile">sendfile</link>
-needs to be disabled:
-<example>
-location /video/ {
-    sendfile       off;
-    aio            on;
-    output_buffers 1 64k;
-}
-</example>
-</para>
-
-<para>
-In addition, starting from FreeBSD&nbsp;5.2.1 and nginx&nbsp;0.8.12, AIO can
-also be used to pre-load data for <c-func>sendfile</c-func>:
-<example>
-location /video/ {
-    sendfile       on;
-    tcp_nopush     on;
-    aio            sendfile;
-}
-</example>
-In this configuration, <c-func>sendfile</c-func> is called with
-the <c-def>SF_NODISKIO</c-def> flag which causes it not to
-block on disk I/O and instead report back when the data are not in
-memory; nginx then initiates an asynchronous data load by reading
-one byte. The FreeBSD kernel then loads the first 128K bytes
-of a file into memory, however next reads will only load data
-in 16K chunks. This can be tuned using the
-<link id="read_ahead">read_ahead</link>
-directive.
-</para>
-
-<para>
-On Linux, AIO is usable starting from kernel version 2.6.22;
-plus, it is also necessary to enable
-<link id="directio">directio</link>,
-otherwise reading will be blocking:
-<example>
-location /video/ {
-    aio            on;
-    directio       512;
-    output_buffers 1 128k;
-}
-</example>
-</para>
-
-<para>
-On Linux,
-<link id="directio">directio</link>
-can only be used for reading blocks that are aligned on 512-byte
-boundaries (or 4K for XFS).
-Reading of unaligned file's end is still made in blocking mode.
-The same holds true for byte range requests, and for FLV requests
-not from the beginning of a file: reading of unaligned data at the
-beginning and end of a file will be blocking.
-There is no need to turn off
-<link id="sendfile">sendfile</link>
-explicitly as it is turned off automatically when
-<link id="directio">directio</link>
-is used.
-</para>
-
-</directive>
-
-
-<directive name="alias">
-<syntax>alias <argument>path</argument></syntax>
-<default/>
-<context>location</context>
-
-<para>
-Defines a replacement for the specified location.
-For example, with the following configuration
-<example>
-location /i/ {
-    alias /data/w3/images/;
-}
-</example>
-the request of
-<dq><code>/i/top.gif</code></dq> will be responded
-with the file
-<dq><pathname>/data/w3/images/top.gif</pathname></dq>.
-</para>
-
-<para>
-The <argument>path</argument> value can contain variables.
-</para>
-
-<para>
-If <code>alias</code> is used inside a location defined
-with a regular expression then such regular expression should
-contain captures and <code>alias</code> should refer to
-these captures (0.7.40), for example:
-<example>
-location ~ ^/users/(.+\.(?:gif|jpe?g|png))$ {
-    alias /data/w3/images/$1;
-}
-</example>
-</para>
-
-<para>
-When location matches the last part of the directive's value:
-<example>
-location /images/ {
-    alias /data/w3/images/;
-}
-</example>
-it is better to use the
-<link id="root">root</link>
-directive instead:
-<example>
-location /images/ {
-    root /data/w3;
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="client_body_in_file_only">
-<syntax>client_body_in_file_only
-        <value>on</value> |
-        <value>clean</value> |
-        <value>off</value>
-</syntax>
-<default>client_body_in_file_only off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Determines whether nginx should save the entire client request body
-into a file.
-This directive can be used during debugging, or when using the
-<var>$request_body_file</var>
-variable, or the
-<link doc="ngx_http_perl_module.xml" id="methods">$r->request_body_file</link>
-method of the module
-<link doc="ngx_http_perl_module.xml">ngx_http_perl_module</link>.
-</para>
-
-<para>
-When set to the value <value>on</value>, temporary files are not
-removed after request processing.
-</para>
-
-<para>
-The value <value>clean</value> will cause the temporary files
-left after request processing to be removed.
-</para>
-
-</directive>
-
-
-<directive name="client_body_in_single_buffer">
-<syntax>client_body_in_single_buffer <value>on</value> | <value>off</value>
-</syntax>
-<default>client_body_in_single_buffer off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Determines whether nginx should save the entire client request body
-in a single buffer.
-The directive is recommended when using the
-<var>$request_body</var>
-variable, to save the number of copy operations involved.
-</para>
-
-</directive>
-
-
-<directive name="client_body_buffer_size">
-
-<syntax>client_body_buffer_size <argument>size</argument></syntax>
-<default>client_body_buffer_size 8k/16k</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets buffer size for reading client request body.
-In case request body is larger than the buffer,
-the whole body or only its part is written to a temporary file.
-<!-- ссылку на соотв. директивы про временные файлы? -->
-By default, buffer size is equal to two memory pages.
-This is 8K on x86, other 32-bit platforms, and x86-64.
-It is usually 16K on other 64-bit platforms.
-</para>
-
-</directive>
-
-
-<directive name="client_body_temp_path">
-<syntax>client_body_temp_path
-        <argument>path</argument>
-        [<argument>level1</argument>
-        [<argument>level2</argument>
-        [<argument>level3</argument>]]]
-</syntax>
-<default>client_body_temp_path client_body_temp</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Defines a directory for storing temporary files holding client request bodies.
-Up to three-level subdirectory hierarchy can be used underneath the specified
-directory.
-For example, in the following configuration
-<example>
-client_body_temp_path /spool/nginx/client_temp 1 2;
-</example>
-a temporary file might look like this:
-<example>
-/spool/nginx/client_temp/7/45/00000123457
-</example>
-</para>
-
-</directive>
-
-
-<directive name="client_body_timeout">
-<syntax>client_body_timeout <argument>time</argument></syntax>
-<default>client_body_timeout 60</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Defines a timeout for reading client request body.
-A timeout is only set between two successive read operations,
-not for the transmission of the whole request body.
-If a client does not transmit anything within this time,
-the client error
-<http-status code="408" text="Request Time-out"/>
-is returned.
-</para>
-
-</directive>
-
-
-<directive name="client_header_buffer_size">
-<syntax>client_header_buffer_size <argument>size</argument></syntax>
-<default>client_header_buffer_size 1k</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Sets buffer size for reading client request header.
-For most requests, a buffer of 1K bytes is enough.
-However, if a request includes long cookies, or comes from a WAP client,
-it may not fit into 1K.
-If a request line, or a request header field do not fit entirely into
-this buffer then larger buffers are allocated, configured by the
-<link id="large_client_header_buffers">large_client_header_buffers</link>
-directive.
-</para>
-
-</directive>
-
-
-<directive name="client_header_timeout">
-<syntax>client_header_timeout <argument>time</argument></syntax>
-<default>client_header_timeout 60</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Defines a timeout for reading client request header.
-If a client does not transmit the entire header within this time,
-the client error
-<http-status code="408" text="Request Time-out"/>
-is returned.
-</para>
-
-</directive>
-
-
-<directive name="client_max_body_size">
-<syntax>client_max_body_size <argument>size</argument></syntax>
-<default>client_max_body_size 1m</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets the maximum allowed size of the client request body,
-specified in the
-<header>Content-Length</header>
-request header field.
-If it exceeds the configured value, the client error
-<http-status code="413" text="Request Entity Too Large"/>
-is returned.
-Please be aware that
-<link doc="/web/upload.xml">browsers cannot correctly display
-this error</link>.
-</para>
-
-</directive>
-
-
-<directive name="default_type">
-<syntax>default_type <argument>mime-type</argument></syntax>
-<default>default_type text/plain</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Defines a default MIME-type of a response.
-</para>
-
-</directive>
-
-
-<directive name="directio" appeared-in="0.7.7">
-<syntax>directio <argument>size</argument> | <value>off</value></syntax>
-<default>directio off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables the use of
-the <c-def>O_DIRECT</c-def> flag (FreeBSD, Linux),
-the <c-def>F_NOCACHE</c-def> flag (Mac OS X),
-or the <c-func>directio</c-func> function (Solaris),
-when reading files that are larger than the specified <argument>size</argument>.
-It automatically disables (0.7.15) the use of
-<link id="sendfile">sendfile</link>
-for a given request.
-It could be useful for serving large files:
-<example>
-directio 4m;
-</example>
-or when using <link id="aio">aio</link> on Linux.
-</para>
-
-</directive>
-
-
-<directive name="directio_alignment" appeared-in="0.8.11">
-<syntax>directio_alignment <argument>size</argument></syntax>
-<default>directio_alignment 512</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets an alignment for
-<link id="directio">directio</link>.
-In most cases, a 512-byte alignment is enough, however, when
-using XFS under Linux, it needs to be increased to 4K.
-</para>
-
-</directive>
-
-
-<directive name="error_page">
-<syntax>error_page
-        <argument>code</argument> ...
-        [<value>=</value>[<argument>response</argument>]]
-        <argument>uri</argument>
-</syntax>
-<default/>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-<context>if in location</context>
-
-<para>
-Defines the URI that will be shown for the specified errors.
-These directives are inherited from the previous level if and
-only if there are no
-<code>error_page</code>
-directives on
-the current level.
-A URI value can contain variables.
-</para>
-
-<para>
-Example:
-<example>
-error_page 404         /404.html;
-error_page 502 503 504 /50x.html;
-error_page 403         http://example.com/forbidden.html;
-</example>
-</para>
-
-<para>
-Furthermore, it is possible to change the response code to another, for example:
-<example>
-error_page 404 =200 /empty.gif;
-</example>
-</para>
-
-<para>
-If an error response is processed by a proxied server, or a FastCGI server,
-and the server may return different response codes (e.g., 200, 302, 401
-or 404), it is possible to respond with a returned code:
-<example>
-error_page 404 = /404.php;
-</example>
-</para>
-
-<para>
-If there is no need to change URI during redirection it is possible to redirect
-error processing into a named location:
-<example>
-location / {
-    error_page 404 = @fallback;
-}
-
-location @fallback {
-    proxy_pass http://backend;
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="if_modified_since" appeared-in="0.7.24">
-<syntax>if_modified_since
-        <value>off</value> |
-        <value>exact</value> |
-        <value>before</value>
-</syntax>
-<default>if_modified_since exact</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Specifies how to compare modification time of a response
-with the time in the
-<header>If-Modified-Since</header>
-request header:
-
-<list type="tag">
-
-<tag-name><value>off</value></tag-name>
-<tag-desc>
-the
-<header>If-Modified-Since</header> request header is ignored (0.7.34);
-</tag-desc>
-
-<tag-name><value>exact</value></tag-name>
-<tag-desc>
-exact match;
-</tag-desc>
-
-<tag-name><value>before</value></tag-name>
-<tag-desc>
-modification time of a response is
-less than or equal to the time in the <header>If-Modified-Since</header>
-request header.
-</tag-desc>
-
-</list>
-</para>
-
-</directive>
-
-
-<directive name="internal">
-<syntax>internal</syntax>
-<default/>
-<context>location</context>
-
-<para>
-Specifies that a given location can only be used for internal requests.
-For external requests, the client error
-<http-status code="404" text="Not Found"/>
-is returned.
-Internal requests are the following:
-
-<list type="bullet">
-
-<listitem>
-requests redirected by the <link id="error_page">error_page</link> directive;
-</listitem>
-
-<listitem>
-subrequests formed by the
-<command>include virtual</command>
-command of the module
-<link doc="ngx_http_ssi_module.xml">ngx_http_ssi_module</link>;
-</listitem>
-
-<listitem>
-requests changed by the
-<link doc="ngx_http_rewrite_module.xml" id="rewrite">rewrite</link>
-directive of the module
-<link doc="ngx_http_rewrite_module.xml">ngx_http_rewrite_module</link>.
-</listitem>
-
-</list>
-</para>
-
-<para>
-Example:
-<example>
-error_page 404 /404.html;
-
-location /404.html {
-    internal;
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="keepalive_requests" appeared-in="0.8.0">
-<syntax>keepalive_requests <argument>number</argument></syntax>
-<default>keepalive_requests 100</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets the maximum number of requests that can be
-made through one keep-alive connection.
-</para>
-
-</directive>
-
-
-<directive name="keepalive_timeout">
-<syntax>keepalive_timeout
-        <argument>time</argument>
-        [<argument>time</argument>]
-</syntax>
-<default>keepalive_timeout 75</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-The first argument sets a timeout during which a keep-alive
-client connection will stay open on the server side.
-The optional second argument sets a value in the
-<dq><header>Keep-Alive: timeout=<argument>time</argument></header></dq>
-response header.
-Two arguments may differ.
-</para>
-
-<para>
-The
-<dq><header>Keep-Alive: timeout=</header></dq>
-is understood by Mozilla and Konqueror.
-MSIE will close keep-alive connection in about 60 seconds.
-</para>
-
-</directive>
-
-
-<directive name="large_client_header_buffers">
-<syntax>large_client_header_buffers <argument>number size</argument></syntax>
-<default>large_client_header_buffers 4 4k/8k</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Sets the maximum <argument>number</argument> and <argument>size</argument> of
-buffers used when reading large client request headers.
-A request line cannot exceed the size of one buffer, or the client error
-<http-status code="414" text="Request-URI Too Large"/>
-is returned.
-A request header field cannot exceed the size of one buffer as well, or the
-client error
-<http-status code="400" text="Bad Request"/>
-is returned.
-Buffers are allocated only on demand.
-By default, the buffer size is equal to one memory page size.
-It is either 4K or 8K, platform dependent.
-If after the end of request processing a connection is transitioned
-into the keep-alive state, these buffers are freed.
-</para>
-
-</directive>
-
-
-<directive name="limit_except">
-<syntax>limit_except <argument>method</argument> ... { ... }</syntax>
-<default/>
-<context>location</context>
-
-<para>
-Limits allowed HTTP methods inside a location.
-The GET method also implies the HEAD method.
-Access to other methods can be limited using the
-<link doc="ngx_http_access_module.xml">ngx_http_access_module</link>
-and
-<link doc="ngx_http_auth_basic_module.xml">ngx_http_auth_basic_module</link>
-modules directives:
-<example>
-limit_except GET {
-    allow 192.168.1.0/32;
-    deny  all;
-}
-</example>
-Please note that this will limit access to all methods
-<emphasis>except</emphasis> GET and HEAD.
-</para>
-
-</directive>
-
-
-<directive name="limit_rate">
-<syntax>limit_rate <argument>rate</argument></syntax>
-<default/>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-<context>if in location</context>
-
-<para>
-Rate limits the transmission of a response to a client.
-The <argument>rate</argument> is specified in bytes per second.
-<!--
-The smaller the rate, the more accurate will be the limitation.
--->
-The limit is per connection, so if a single client opens 2 connections,
-an overall rate will be 2x more than specified.
-</para>
-
-<para>
-This directive is not applicable if one wants to rate limit
-a group of clients on the
-<link id="server">server</link>
-level.
-If that is the case, the desired limit can be specified in the
-<var>$limit_rate</var>
-variable:
-<example>
-server {
-
-    if ($slow) {
-        set $limit_rate 4k;
-    }
-
-    ...
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="limit_rate_after" appeared-in="0.8.0">
-<syntax>limit_rate_after <argument>size</argument></syntax>
-<default/>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-<context>if in location</context>
-
-<para>
-Sets the initial amount after which the further transmission
-of a response to a client will be rate limited.
-</para>
-
-<para>
-Example:
-<example>
-location /flv/ {
-    flv;
-    limit_rate_after 500k;
-    limit_rate       50k;
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="listen">
-<syntax>listen
-        <argument>address</argument>[:<argument>port</argument>]
-        [<parameter>default</parameter> | <parameter>default_server</parameter>
-        [<parameter>backlog</parameter>=<argument>number</argument>]
-        [<parameter>rcvbuf</parameter>=<argument>size</argument>]
-        [<parameter>sndbuf</parameter>=<argument>size</argument>]
-        [<parameter>accept_filter</parameter>=<argument>filter</argument>]
-        [<parameter>deferred</parameter>]
-        [<parameter>bind</parameter>]
-        [<parameter>ipv6only</parameter>=<value>on</value>|<value>off</value>]
-        [<parameter>ssl</parameter>]]
-</syntax>
-<syntax>listen
-        <argument>port</argument>
-        [<parameter>default</parameter> | <parameter>default_server</parameter>
-        [<parameter>backlog</parameter>=<argument>number</argument>]
-        [<parameter>rcvbuf</parameter>=<argument>size</argument>]
-        [<parameter>sndbuf</parameter>=<argument>size</argument>]
-        [<parameter>accept_filter</parameter>=<argument>filter</argument>]
-        [<parameter>deferred</parameter>]
-        [<parameter>bind</parameter>]
-        [<parameter>ipv6only</parameter>=<value>on</value>|<value>off</value>]
-        [<parameter>ssl</parameter>]]
-</syntax>
-<default>listen *:80 | *:8000</default>
-<context>server</context>
-
-<para>
-Sets an <argument>address</argument> and a <argument>port</argument>, on which
-the server will accept requests.
-Only one of <argument>address</argument> or <argument>port</argument> can be
-specified.
-An <argument>address</argument> may also be a hostname, for example:
-<example>
-listen 127.0.0.1:8000;
-listen 127.0.0.1;
-listen 8000;
-listen *:8000;
-listen localhost:8000;
-</example>
-IPv6 addresses (0.7.36) are specified in square brackets:
-<example>
-listen [::]:8000;
-listen [fe80::1];
-</example>
-</para>
-
-<para>
-If only <argument>address</argument> is given, the port 80 is used.
-</para>
-
-<para>
-If directive is not present then either the <code>*:80</code> is used
-if nginx runs with superuser privileges, or <code>*:8000</code> otherwise.
-</para>
-
-<para>
-The <parameter>default</parameter> parameter, if present,
-will cause the server to become the default server for the specified
-<argument>address</argument>:<argument>port</argument> pair.
-If none of the directives have the <parameter>default</parameter>
-parameter then the first server with the
-<argument>address</argument>:<argument>port</argument> pair will be
-the default server for this pair.
-Starting from version 0.8.21 it is possible to use the
-<parameter>default_server</parameter>
-parameter.
-</para>
-
-<para>
-A <code>listen</code> directive which has the <parameter>default</parameter>
-parameter can have several additional parameters specific to system calls
-<c-func>listen</c-func> and <c-func>bind</c-func>.
-Starting from version 0.8.21, these parameters can be specified in any
-<code>listen</code> directive, but only once for the given
-<argument>address</argument>:<argument>port</argument> pair.
-<list type="tag">
-
-<tag-name>
-<parameter>backlog</parameter>=<argument>number</argument>
-</tag-name>
-<tag-desc>
-sets the <parameter>backlog</parameter> parameter in the
-<c-func>listen</c-func> call.
-By default, <parameter>backlog</parameter> equals -1 on FreeBSD
-and 511 on other platforms.
-</tag-desc>
-
-<tag-name>
-<parameter>rcvbuf</parameter>=<argument>size</argument>
-</tag-name>
-<tag-desc>
-sets the <c-def>SO_RCVBUF</c-def> parameter for the listening socket.
-</tag-desc>
-
-<tag-name>
-<parameter>sndbuf</parameter>=<argument>size</argument>
-</tag-name>
-<tag-desc>
-sets the <c-def>SO_SNDBUF</c-def> parameter for the listening socket.
-</tag-desc>
-
-<tag-name>
-<parameter>accept_filter</parameter>=<argument>filter</argument>
-</tag-name>
-<tag-desc>
-sets the name of the accept filter.
-This works only on FreeBSD, acceptable values are <value>dataready</value>
-and <value>httpready</value>.
-On receipt of the <c-def>SIGHUP</c-def> signal, an accept filter can only be
-changed in recent versions of FreeBSD, starting from 6.0, 5.4-STABLE
-and 4.11-STABLE.
-</tag-desc>
-
-<tag-name>
-<parameter>deferred</parameter>
-</tag-name>
-<tag-desc>
-instructs to use a deferred <c-func>accept</c-func> on Linux
-using the <c-def>TCP_DEFER_ACCEPT</c-def> option.
-</tag-desc>
-
-<tag-name>
-<parameter>bind</parameter>
-</tag-name>
-<tag-desc>
-specifies to make a separate <c-func>bind</c-func> call for a given
-<argument>address</argument>:<argument>port</argument> pair.
-This is because nginx will only <c-func>bind</c-func> to
-<code>*</code>:<argument>port</argument>
-if there are several <code>listen</code> directives with
-the same port but different addresses, and one of the
-<code>listen</code> directives listens on all addresses
-for the given port (<code>*</code>:<argument>port</argument>).
-It should be noted that in this case a <c-func>getsockname</c-func>
-system call will be made to determine an address that accepted a
-connection.
-If parameters <parameter>backlog</parameter>, <parameter>rcvbuf</parameter>,
-<parameter>sndbuf</parameter>, <parameter>accept_filter</parameter>, or
-<parameter>deferred</parameter> are used then for a given
-<argument>address</argument>:<argument>port</argument> pair
-a separate <c-func>bind</c-func> call will always be made.
-</tag-desc>
-
-<tag-name>
-<parameter>ipv6only</parameter>=<value>on</value>|<value>off</value>
-</tag-name>
-<tag-desc>
-this parameter (0.7.42) sets the value of the <c-def>IPV6_V6ONLY</c-def>
-parameter for the listening socket.
-This parameter can only be set once on start.
-</tag-desc>
-
-<tag-name>
-<parameter>ssl</parameter>
-</tag-name>
-<tag-desc>
-this parameter (0.7.14) does not relate to system calls
-<c-func>listen</c-func> and <c-func>bind</c-func>, but allows to
-specify that all connections accepted on this port should work in
-the SSL mode.
-This allows for a more compact configuration for the server operating
-in both HTTP and HTTPS modes simultaneously.
-<example>
-listen 80;
-listen 443 default ssl;
-</example>
-</tag-desc>
-
-</list>
-</para>
-
-<para>
-Example:
-<example>
-listen 127.0.0.1 default accept_filter=dataready backlog=1024;
-</example>
-</para>
-
-</directive>
-
-
-<directive name="location">
-<syntax>location [
-        <value>=</value> |
-	<value>~</value> |
-	<value>~*</value> |
-	<value>^~</value> |
-	<value>@</value>
-	] <argument>uri</argument>
-{ ... }</syntax>
-<default/>
-<context>server</context>
-<!--
-<context>location</context>
--->
-
-<para>
-Sets a configuration based on a request URI.
-A location can either be defined by a prefix string, or by a regular expression.
-Regular expressions are specified by prepending them with the
-<dq><value>~*</value></dq> prefix (for case-insensitive matching), or with the
-<dq><value>~</value></dq> prefix (for case-sensitive matching).
-To find a location matching a given request, nginx first checks
-locations defined using the prefix strings (prefix locations).
-Amongst them, the most specific one is searched.
-Then regular expressions are checked, in the order of their appearance
-in a configuration file.
-A search terminates on the first match, and its corresponding
-configuration is used.
-If no match with a regular expression location is found then a
-configuration of the most specific prefix location is used.
-</para>
-
-<para>
-For case-insensitive operating systems such as Mac OS X and Cygwin,
-the string matching ignores a case (0.7.7).
-However, comparison is limited to one-byte locales.
-</para>
-
-<para>
-Regular expressions can contain captures (0.7.40) that can later
-be used in other directives.
-</para>
-
-<para>
-If the most specific prefix location has the <dq><value>^~</value></dq> prefix
-then regular expressions are not checked.
-</para>
-
-<para>
-Also, using the <dq><value>=</value></dq> prefix it is possible to define
-an exact match of URI and location.
-If an exact match is found, the search terminates.
-For example, if a <dq><code>/</code></dq> request happens frequently,
-defining <dq><code>location = /</code></dq> will speed up the processing
-of these requests, as search terminates right after the first
-comparison.
-</para>
-
-<para>
-In versions from 0.7.1 to 0.8.41, if a request matched the prefix
-location without the <dq><value>=</value></dq> and <dq><value>^~</value></dq>
-prefixes, the search also terminated and regular expressions were
-not checked.
-</para>
-
-<para>
-Let's illustrate the above by example:
-<example>
-location = / {
-    [ configuration A ]
-}
-
-location / {
-    [ configuration B ]
-}
-
-location ^~ /images/ {
-    [ configuration C ]
-}
-
-location ~* \.(gif|jpg|jpeg)$ {
-    [ configuration D ]
-}
-</example>
-The <dq><code>/</code></dq> request will match configuration A,
-the <dq><code>/documents/document.html</code></dq> request will match
-configuration B,
-the <dq><code>/images/1.gif</code></dq> request will match configuration C, and
-the <dq><code>/documents/1.jpg</code></dq> request will match configuration D.
-</para>
-
-<para>
-The <dq><value>@</value></dq> prefix defines a named location.
-Such a location is not used for a regular request processing, but instead
-used for request redirection.
-</para>
-
-<!--
-<migration from="Apache" directive="Location" />
--->
-
-</directive>
-
-
-<directive name="log_not_found">
-<syntax>log_not_found <value>on</value> | <value>off</value></syntax>
-<default>log_not_found on</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables logging of errors about not found files into the
-<link doc="../ngx_core_module.xml" id="error_log">error_log</link>.
-</para>
-
-</directive>
-
-
-<directive name="log_subrequest">
-<syntax>log_subrequest <value>on</value> | <value>off</value></syntax>
-<default>log_subrequest off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables logging of subrequests into the
-<link doc="ngx_http_log_module.xml" id="access_log">access_log</link>.
-</para>
-
-</directive>
-
-
-<directive name="merge_slashes">
-<syntax>merge_slashes <value>on</value> | <value>off</value></syntax>
-<default>merge_slashes on</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Enables or disables compression of two or more adjacent slashes
-in a URI into a single slash.
-</para>
-
-<para>
-Note that compression is essential for the correct prefix string
-and regular expressions location matching.
-Without it, the <dq><code>//scripts/one.php</code></dq> request would not match
-<example>
-location /scripts/ {
-    ...
-}
-</example>
-and might be processed as a static file,
-so it gets converted to <dq><code>/scripts/one.php</code></dq>.
-</para>
-
-<para>
-Turning the compression <value>off</value> can become necessary if a URI
-contains base64-encoded names, since base64 uses the "/" character internally.
-However, for security considerations, it is better to avoid turning off
-the compression.
-</para>
-
-<para>
-If a directive is specified on the
-<link id="server">server</link>
-level, which is also a default server, its value will cover
-all virtual servers listening on the same address and port.
-</para>
-
-</directive>
-
-
-<directive name="msie_padding">
-<syntax>msie_padding <value>on</value> | <value>off</value></syntax>
-<default>msie_padding on</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables adding of comments to responses with status
-greater than 400 for MSIE clients, to pad the response size to 512 bytes.
-</para>
-
-</directive>
-
-
-<directive name="msie_refresh">
-<syntax>msie_refresh <value>on</value> | <value>off</value></syntax>
-<default>msie_refresh off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables issuing refreshes instead of redirects, for MSIE clients.
-</para>
-
-</directive>
-
-
-<directive name="open_file_cache">
-<syntax>open_file_cache
-<parameter>max</parameter>=<argument>N</argument>
-[<parameter>inactive</parameter>=<argument>time</argument>] |
-<value>off</value>
-</syntax>
-<default>open_file_cache off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Configures a cache that can store:
-<list type="bullet">
-
-<listitem>
-open file descriptors, their sizes and modification times;
-</listitem>
-
-<listitem>
-directory lookups;
-</listitem>
-
-<listitem>
-file lookup errors, such as "file not found", "no read permission",
-and so on.
-Caching of errors should be enabled separately by the
-<link id="open_file_cache_errors">open_file_cache_errors</link>
-directive.
-</listitem>
-
-</list>
-</para>
-
-<para>
-The directive has the following parameters:
-<list type="tag">
-
-<tag-name>
-<parameter>max</parameter>
-</tag-name>
-<tag-desc>
-sets the maximum number of elements in the cache;
-on cache overflow the least recently used (LRU) elements get removed;
-</tag-desc>
-
-<tag-name>
-<parameter>inactive</parameter>
-</tag-name>
-<tag-desc>
-defines a time, after which the element gets removed from the cache
-if there were no accesses to it during this time;
-by default, it is 60 seconds;
-</tag-desc>
-
-<tag-name>
-<value>off</value>
-</tag-name>
-<tag-desc>
-disables the cache.
-</tag-desc>
-
-</list>
-</para>
-
-<para>
-Example:
-<example>
-open_file_cache          max=1000 inactive=20s;
-open_file_cache_valid    30s;
-open_file_cache_min_uses 2;
-open_file_cache_errors   on;
-<!--
-open_file_cache_events   on;
--->
-</example>
-</para>
-
-</directive>
-
-
-<directive name="open_file_cache_errors">
-<syntax>open_file_cache_errors <value>on</value> | <value>off</value></syntax>
-<default>open_file_cache_errors off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables caching of file lookup errors by the
-<link id="open_file_cache">open_file_cache</link>.
-</para>
-
-</directive>
-
-
-<!--
-
-<directive name="open_file_cache_events">
-<syntax>open_file_cache_events <value>on</value> | <value>off</value></syntax>
-<default>open_file_cache_events off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables to use kernel events to validate
-<link id="open_file_cache">open_file_cache</link>
-elements.
-This directive works with the
-<link doc="../events.xml" id="kqueue">kqueue</link>
-method only.
-Note that only NetBSD&nbsp;2.0+ and FreeBSD&nbsp;6.0+
-support events for arbitrary file system types.
-Other operating systems support events only for essential
-file systems such as UFS or FFS.
-</para>
-
-</directive>
-
--->
-
-
-<directive name="open_file_cache_min_uses">
-<syntax>open_file_cache_min_uses <argument>number</argument></syntax>
-<default>open_file_cache_min_uses 1</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets the minimum <argument>number</argument> of file accesses during
-the period configured by the <parameter>inactive</parameter> parameter
-of the <link id="open_file_cache">open_file_cache</link> directive,
-after which a file descriptor will remain open in the cache.
-</para>
-
-</directive>
-
-
-<directive name="open_file_cache_valid">
-<syntax>open_file_cache_valid <argument>time</argument></syntax>
-<default>open_file_cache_valid 60</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets a time after which
-<link id="open_file_cache">open_file_cache</link>
-elements should be validated.
-<!--
-When <link id="open_file_cache_events">
-open_file_cache_events</link> is enabled, open file descriptors
-are checked only once, and then updated right after they get changed.
--->
-</para>
-
-</directive>
-
-
-<directive name="optimize_server_names">
-<syntax>optimize_server_names <value>on</value> | <value>off</value></syntax>
-<default>optimize_server_names on</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-This directive is obsolete.
-</para>
-
-<para>
-Enables or disables optimization of hostname checking in name-based
-virtual servers.
-In particular, the checking affects hostnames used in redirects.
-If optimization is enabled, and all name-based servers listening on
-the same address:port pair have identical configuration, then
-names are not checked during request processing, and the first
-server name is used in redirects.
-In case redirects should use hostnames sent by clients,
-optimization needs to be disabled.
-</para>
-
-</directive>
-
-
-<directive name="port_in_redirect">
-<syntax>port_in_redirect <value>on</value> | <value>off</value></syntax>
-<default>port_in_redirect on</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables specifying the port in redirects issued by nginx.
-</para>
-
-</directive>
-
-
-<directive name="read_ahead">
-<syntax>read_ahead <argument>size</argument></syntax>
-<default>read_ahead 0</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets the amount of pre-reading when working with files, in the kernel.
-</para>
-
-<para>
-On Linux, the
-<code>posix_fadvise(0, 0, 0, POSIX_FADV_SEQUENTIAL)</code>
-system call is used, so the <argument>size</argument> argument is ignored.
-</para>
-
-<para>
-On FreeBSD, the
-<code>fcntl(O_READAHEAD,</code><argument>size</argument><code>)</code>
-system call is used, supported in FreeBSD&nbsp;9.0-CURRENT.
-FreeBSD&nbsp;7 needs to be
-<link url="http://sysoev.ru/freebsd/patch.readahead.txt">patched</link>.
-</para>
-
-</directive>
-
-
-<directive name="recursive_error_pages">
-<syntax>recursive_error_pages <value>on</value> | <value>off</value></syntax>
-<default>recursive_error_pages off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables doing several redirects using the
-<link id="error_page">error_page</link>
-directive.
-</para>
-
-</directive>
-
-
-<directive name="reset_timedout_connection">
-<syntax>reset_timedout_connection
-        <value>on</value> | <value>off</value></syntax>
-<default>reset_timedout_connection off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables resetting of timed out connections.
-The reset is performed as follows: before closing a socket, the
-<c-def>SO_LINGER</c-def>
-option is set on it with a timeout value of 0.
-When the socket is closed, a client is sent TCP RST, and all memory
-occupied by this socket is freed.
-This avoids keeping of an already closed socket with filled buffers
-for a long time, in a FIN_WAIT1 state.
-</para>
-
-<para>
-It should be noted that timed out keep-alive connections are still
-closed normally.
-</para>
-
-</directive>
-
-
-<directive name="resolver">
-<syntax>resolver <argument>address</argument></syntax>
-<default/>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets the <argument>address</argument> of a name server, for example:
-<example>
-resolver 127.0.0.1;
-</example>
-</para>
-
-</directive>
-
-
-<directive name="resolver_timeout">
-<syntax>resolver_timeout <argument>time</argument></syntax>
-<default>resolver_timeout 30s</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets a timeout for name resolution, for example:
-<example>
-resolver_timeout 5s;
-</example>
-</para>
-
-</directive>
-
-
-<directive name="root">
-<syntax>root <argument>path</argument></syntax>
-<default>root html</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-<context>if in location</context>
-
-<para>
-Sets the root directory for requests.
-For example, with the following configuration
-<example>
-location /i/ {
-    root /data/w3;
-}
-</example>
-<dq><code>/i/top.gif</code></dq> will be responded
-with the file
-<dq><pathname>/data/w3/i/top.gif</pathname></dq>.
-</para>
-
-<para>
-The <argument>path</argument> value can contain variables.
-</para>
-
-<para>
-A path to the file is constructed by merely adding a URI to the value
-of the <code>root</code> directive.
-If a URI need to be modified, the
-<link id="alias">alias</link> directive should be used.
-</para>
-
-</directive>
-
-
-<directive name="satisfy">
-<syntax>satisfy <value>all</value> | <value>any</value></syntax>
-<default>satisfy all</default>
-<context>location</context>
-
-<para>
-Allows access if any of the
-<link doc="ngx_http_access_module.xml">ngx_http_access_module</link>
-or <link doc="ngx_http_auth_basic_module.xml">ngx_http_auth_basic_module</link>
-modules grant access.
-<example>
-location / {
-    satisfy any;
-
-    allow 192.168.1.0/32;
-    deny  all;
-
-    auth_basic           "closed site";
-    auth_basic_user_file conf/htpasswd;
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="satisfy_any">
-<syntax>satisfy_any <value>on</value> | <value>off</value></syntax>
-<default>satisfy_any off</default>
-<context>location</context>
-
-<para>
-This directive was renamed to the <link id="satisfy">satisfy</link> directive.
-</para>
-
-</directive>
-
-
-<directive name="send_timeout">
-<syntax>send_timeout <argument>time</argument></syntax>
-<default>send_timeout 60</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets a timeout for transmitting a response to the client.
-A timeout is only set between two successive write operations,
-not for the transmission of the whole response.
-If a client does not receive anything within this time,
-a connection is closed.
-</para>
-
-</directive>
-
-
-<directive name="sendfile">
-
-<syntax>sendfile <value>on</value> | <value>off</value></syntax>
-<default>sendfile off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables the use of
-<c-func>sendfile</c-func>.
-</para>
-
-</directive>
-
-
-<directive name="server">
-<syntax>server { ... }</syntax>
-<default/>
-<context>http</context>
-
-<para>
-Sets a configuration for the virtual server.
-There is no clean separation between IP-based (based on the IP address)
-and name-based (based on the <header>Host</header> request header field)
-virtual servers.
-Instead, the <link id="listen">listen</link> directives describe all
-addresses and ports that should accept connections for a server, and the
-<link id="server_name">server_name</link> directive lists all server names.
-An example configuration is provided in the
-<link doc="../virtual_hosts.xml">
-Setting Up Virtual Servers</link> document.
-</para>
-
-</directive>
-
-
-<directive name="server_name">
-<syntax>server_name <argument>name</argument> ...</syntax>
-<default>server_name hostname</default>
-<context>server</context>
-
-<para>
-Sets names of the virtual server, for example:
-<example>
-server {
-    server_name example.com www.example.com;
-}
-</example>
-</para>
-
-<para>
-The first name becomes a primary server name.
-By default, the machine's hostname is used.
-Server names can include an asterisk (<dq><code>*</code></dq>)
-to replace the first or last part of a name:
-<example>
-server {
-    server_name example.com *.example.com www.example.*;
-}
-</example>
-</para>
-
-<para>
-The first two of the above mentioned names can be combined:
-<example>
-server {
-    server_name .example.com;
-}
-</example>
-</para>
-
-<para>
-It is also possible to use regular expressions in server names,
-prepending the name with a tilde (<dq><code>~</code></dq>):
-<example>
-server {
-    server_name www.example.com ~^www\d+\.example\.com$;
-}
-</example>
-</para>
-
-<para>
-Regular expressions can contain captures (0.7.40) that can later
-be used in other directives:
-<example>
-server {
-    server_name ~^(www\.)?(.+)$;
-
-    location / {
-        root /sites/$2;
-    }
-}
-
-server {
-    server_name _;
-
-    location / {
-        root /sites/default;
-    }
-}
-</example>
-</para>
-
-<para>
-Starting from version 0.8.25, named captures in regular expressions create
-variables that can later be used in other directives:
-<example>
-server {
-    server_name ~^(www\.)?(?&lt;domain&gt;.+)$;
-
-    location / {
-        root /sites/$domain;
-    }
-}
-
-server {
-    server_name _;
-
-    location / {
-        root /sites/default;
-    }
-}
-</example>
-</para>
-
-<para>
-Starting from version 0.7.11, it is possible to specify an empty name:
-<example>
-server {
-    server_name www.example.com "";
-}
-</example>
-It allows this server to process requests without the <header>Host</header>
-header, instead of the default server for the given address:port pair.
-</para>
-
-<para>
-The name checking order is as follows:
-<list type="enum">
-
-<listitem>
-full names
-</listitem>
-
-<listitem>
-names with the prefix mask, e.g. <dq><code>*.example.com</code></dq>
-</listitem>
-
-<listitem>
-names with the suffix mask, e.g. <dq><code>mail.*</code></dq>
-</listitem>
-
-<listitem>
-regular expressions
-</listitem>
-
-</list>
-</para>
-
-</directive>
-
-
-<directive name="server_name_in_redirect">
-<syntax>server_name_in_redirect <value>on</value> | <value>off</value></syntax>
-<default>server_name_in_redirect on</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables the use of the primary server name, specified by the
-<link id="server_name">server_name</link>
-directive, in redirects issued by nginx.
-When disabled, the name from the <header>Host</header> request header field
-is used.
-If this field is not present, an IP address of the server is used.
-</para>
-
-</directive>
-
-
-<directive name="server_names_hash_max_size">
-<syntax>server_names_hash_max_size <argument>size</argument></syntax>
-<default>server_names_hash_max_size 512</default>
-<context>http</context>
-
-<para>
-Sets the maximum <argument>size</argument> of the server names hash tables.
-For more information, please refer to
-<link doc="../hash.xml">Setting Up Hashes</link>.
-</para>
-
-</directive>
-
-
-<directive name="server_names_hash_bucket_size">
-<syntax>server_names_hash_bucket_size <argument>size</argument></syntax>
-<default>server_names_hash_bucket_size 32/64/128</default>
-<context>http</context>
-
-<para>
-Sets the bucket size for the server names hash tables.
-Default value depends on the size of the processor's cache line.
-For more information, please refer to
-<link doc="../hash.xml">Setting Up Hashes</link>.
-</para>
-
-</directive>
-
-
-<directive name="server_tokens">
-<syntax>server_tokens <value>on</value> | <value>off</value></syntax>
-<default>server_tokens on</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables emitting of nginx version in error messages and in the
-<header>Server</header> response header field.
-</para>
-
-</directive>
-
-
-<directive name="tcp_nodelay">
-<syntax>tcp_nodelay <value>on</value> | <value>off</value></syntax>
-<default>tcp_nodelay on</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables the use of the <c-def>TCP_NODELAY</c-def> option.
-The option is enabled only when a connection is transitioned into the
-keep-alive state.
-</para>
-
-</directive>
-
-
-<directive name="tcp_nopush">
-<syntax>tcp_nopush <value>on</value> | <value>off</value></syntax>
-<default>tcp_nopush off</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Enables or disables the use of
-the <c-def>TCP_NOPUSH</c-def> socket option on FreeBSD
-or the <c-def>TCP_CORK</c-def> socket option on Linux.
-Opitons are enables only when <link id="sendfile">sendfile</link> is used.
-Enabling the option allows to
-<list type="bullet">
-
-<listitem>
-send the response header and the beginning of a file in one packet,
-on Linux and FreeBSD&nbsp;4.*;
-</listitem>
-
-<listitem>
-send a file in full packets.
-</listitem>
-
-</list>
-</para>
-
-</directive>
-
-
-<directive name="try_files">
-<syntax>try_files
-        <argument>file</argument> ...
-	<argument>uri</argument>
-</syntax>
-<syntax>try_files
-        <argument>file</argument> ...
-        =<argument>code</argument>
-</syntax>
-<default/>
-<context>location</context>
-
-<para>
-Checks the existence of files in the specified order, and uses
-the first found file for request processing; the processing
-is performed in this location's context.
-It is possible to check the directory existence by specifying
-the slash at the end of a name, e.g. <dq><code>$uri/</code></dq>.
-If none of the files were found, an internal redirect to the
-<argument>uri</argument> specified by the last argument is made.
-As of version 0.7.51, the last argument can also be a
-<argument>code</argument>:
-<example>
-location / {
-    try_files $uri $uri/index.html $uri.html =404;
-}
-</example>
-</para>
-
-<para>
-Example when proxying Mongrel:
-<example>
-location / {
-    try_files /system/maintenance.html
-              $uri $uri/index.html $uri.html
-              @mongrel;
-}
-
-location @mongrel {
-    proxy_pass http://mongrel;
-}
-</example>
-</para>
-
-<para>
-Example for Drupal/FastCGI:
-<example>
-location / {
-    try_files $uri $uri/ @drupal;
-}
-
-location ~ \.php$ {
-    try_files $uri @drupal;
-
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
-    fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
-    fastcgi_param QUERY_STRING    $args;
-
-    ... other fastcgi_param's
-}
-
-location @drupal {
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
-    fastcgi_param SCRIPT_NAME     /index.php;
-    fastcgi_param QUERY_STRING    q=$uri&amp;$args;
-
-    ... other fastcgi_param's
-}
-</example>
-In the following example,
-<example>
-location / {
-    try_files $uri $uri/ @drupal;
-}
-</example>
-the <code>try_files</code> directive is equivalent to
-<example>
-location / {
-    error_page 404 = @drupal;
-    log_not_found off;
-}
-</example>
-And here,
-<example>
-location ~ \.php$ {
-    try_files $uri @drupal;
-
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
-
-    ...
-}
-</example>
-<code>try_files</code> checks the existence of the PHP file
-before passing the request to the FastCGI server.
-</para>
-
-<para>
-Example for Wordpress and Joomla:
-<example>
-location / {
-    try_files $uri $uri/ @wordpress;
-}
-
-location ~ \.php$ {
-    try_files $uri @wordpress;
-
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
-    ... other fastcgi_param's
-}
-
-location @wordpress {
-    fastcgi_pass ...;
-
-    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
-    ... other fastcgi_param's
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="types">
-<syntax>types { ... }</syntax>
-<default>see below</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Maps file name extensions to MIME types of responses.
-Several extensions can map to one type.
-The following mappings are configured by default:
-<example>
-types {
-    text/html  html;
-    image/gif  gif;
-    image/jpeg jpg;
-}
-</example>
-</para>
-
-<para>
-A sufficiently full mapping table is distributed with nginx in the
-<pathname>conf/mime.types</pathname> file.
-</para>
-
-<para>
-To make a particular location emit the
-<dq><code>application/octet-stream</code></dq>
-MIME type for all requests, try the following:
-<example>
-location /download/ {
-    types        { }
-    default_type application/octet-stream;
-}
-</example>
-</para>
-
-</directive>
-
-
-<directive name="underscores_in_headers">
-<syntax>underscores_in_headers <value>on</value> | <value>off</value></syntax>
-<default>underscores_in_headers off</default>
-<context>http</context>
-<context>server</context>
-
-<para>
-Enables or disables the use of underscores in client request header fields.
-</para>
-
-</directive>
-
-</section>
-
-<section id="variables" name="Embedded Variables">
-
-<para>
-The module <code>ngx_http_core_module</code> supports embedded variables with
-names matching those of the Apache Server.
-First of all, these are variables representing client request header
-fields, such as, <var>$http_user_agent</var>, <var>$http_cookie</var>,
-and so on.
-It also supports other variables:
-<list type="tag">
-
-<tag-name><var>$args</var></tag-name>
-<tag-desc>
-arguments in the request line
-</tag-desc>
-
-<tag-name><var>$arg_</var><argument>name</argument></tag-name>
-<tag-desc>
-argument <argument>name</argument> in the request line
-</tag-desc>
-
-<tag-name><var>$binary_remote_addr</var></tag-name>
-<tag-desc>
-client address in a binary form, value's length is always 4 bytes
-</tag-desc>
-
-<tag-name><var>$content_length</var></tag-name>
-<tag-desc>
-<header>Content-Length</header> request header field
-</tag-desc>
-
-<tag-name><var>$content_type</var></tag-name>
-<tag-desc>
-<header>Content-Type</header> request header field
-</tag-desc>
-
-<tag-name><var>$cookie_</var><argument>name</argument></tag-name>
-<tag-desc>
-the <argument>name</argument> cookie
-</tag-desc>
-
-<tag-name><var>$document_root</var></tag-name>
-<tag-desc>
-<link id="root">root</link> directive's value for the current request
-</tag-desc>
-
-<tag-name><var>$document_uri</var></tag-name>
-<tag-desc>
-same as <var>$uri</var>
-</tag-desc>
-
-<tag-name><var>$host</var></tag-name>
-<tag-desc>
-<header>Host</header> request header field,
-or the server name matching a request if this field is not present
-</tag-desc>
-
-<tag-name><var>$hostname</var></tag-name>
-<tag-desc>
-host name
-</tag-desc>
-
-<tag-name><var>$http_</var><argument>name</argument></tag-name>
-<tag-desc>
-the <argument>name</argument> request header field
-</tag-desc>
-
-<tag-name><var>$is_args</var></tag-name>
-<tag-desc>
-<dq><code>?</code></dq> if a request line has arguments,
-or an empty string otherwise
-</tag-desc>
-
-<tag-name><var>$limit_rate</var></tag-name>
-<tag-desc>
-allows for connection rate limiting
-</tag-desc>
-
-<tag-name><var>$pid</var></tag-name>
-<tag-desc>
-PID of the worker process
-</tag-desc>
-
-<tag-name><var>$request_method</var></tag-name>
-<tag-desc>
-request method, usually
-<dq><code>GET</code></dq> or <dq><code>POST</code></dq>
-</tag-desc>
-
-<tag-name><var>$remote_addr</var></tag-name>
-<tag-desc>
-client address
-</tag-desc>
-
-<tag-name><var>$remote_port</var></tag-name>
-<tag-desc>
-client port
-</tag-desc>
-
-<tag-name><var>$remote_user</var></tag-name>
-<tag-desc>
-user name supplied with the Basic authentication
-</tag-desc>
-
-<tag-name><var>$realpath_root</var></tag-name>
-<tag-desc>
-<link id="root">root</link> directive's value
-for the current request, with all symbolic links resolved to real paths
-</tag-desc>
-
-<tag-name><var>$request_filename</var></tag-name>
-<tag-desc>
-file path for the current query, based on the
-<link id="root">root</link> and <link id="alias">alias</link>
-directives, and the request URI
-</tag-desc>
-
-<tag-name><var>$request_body</var></tag-name>
-<tag-desc>
-request body
-<para>
-The variable's value is made available in locations
-processed by the
-<link doc="ngx_http_proxy_module.xml" id="proxy_pass">proxy_pass</link>
-and
-<link doc="ngx_http_fastcgi_module.xml" id="fastcgi_pass">fastcgi_pass</link>
-directives.
-</para>
-</tag-desc>
-
-<tag-name><var>$request_body_file</var></tag-name>
-<tag-desc>
-name of a temporary file with the request body
-<para>
-At the end of processing, the file needs to be removed.
-To always write a request body to a file,
-<link id="client_body_in_file_only">client_body_in_file_only on</link>
-needs be specified.
-When passing the name of a temporary file in a proxied request,
-or in a request to a FastCGI server,
-passing of the request body should be disabled by the
-<link doc="ngx_http_proxy_module.xml"
-id="proxy_pass_request_body">proxy_pass_request_body</link>
-and
-<link doc="ngx_http_fastcgi_module.xml"
-id="fastcgi_pass_request_body">fastcgi_pass_request_body</link>
-directives, respectively.
-</para>
-</tag-desc>
-
-<tag-name><var>$request_uri</var></tag-name>
-<tag-desc>
-full original request URI (with arguments)
-</tag-desc>
-
-<tag-name><var>$query_string</var></tag-name>
-<tag-desc>
-same as <var>$args</var>
-</tag-desc>
-
-<tag-name><var>$scheme</var></tag-name>
-<tag-desc>
-request scheme, <dq><code>http</code></dq> or <dq><code>https</code></dq>
-</tag-desc>
-
-<tag-name><var>$server_protocol</var></tag-name>
-<tag-desc>
-request protocol, usually
-<dq><code>HTTP/1.0</code></dq>
-or
-<dq><code>HTTP/1.1</code></dq>
-</tag-desc>
-
-<tag-name><var>$server_addr</var></tag-name>
-<tag-desc>
-an address of the server which accepted a request
-<para>
-Computing a value of this variable usually requires one system call.
-To avoid a system call, the <link id="listen">listen</link> directives
-must specify addresses and use the <parameter>bind</parameter> parameter
-</para>
-</tag-desc>
-
-<tag-name><var>$server_name</var></tag-name>
-<tag-desc>
-name of the server which accepted a request
-</tag-desc>
-
-<tag-name><var>$server_port</var></tag-name>
-<tag-desc>
-port of the server which accepted a request
-</tag-desc>
-
-<tag-name><var>$uri</var></tag-name>
-<tag-desc>
-current URI in request
-<para>
-It may differ from an original, e.g. when doing internal redirects,
-or when using index files.
-</para>
-</tag-desc>
-
-</list>
-</para>
-
-</section>
-
-</module>
diff --git a/docs/xml/http/ngx_http_mp4_module.xml b/docs/xml/http/ngx_http_mp4_module.xml
deleted file mode 100644
index 2a38561..0000000
--- a/docs/xml/http/ngx_http_mp4_module.xml
+++ /dev/null
@@ -1,156 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE module SYSTEM "../../dtd/module.dtd">
-
-<module name="HTTP MP4 Module" id="http_mp4_module">
-
-<section name="Summary">
-
-<para>
-The module <code>ngx_http_mp4_module</code> provides pseudo-streaming
-server-side support for H.264/AAC files typically having filename extensions
-<pathname>.mp4</pathname>, <pathname>.m4v</pathname>,
-and <pathname>.m4a</pathname>.
-</para>
-
-<para>
-Pseudo-streaming works in alliance with conformant Flash players.
-A player sends an HTTP request to the server with a start time
-argument in the request URI’s query string (named simply
-<parameter>start</parameter>
-and specified in seconds), and the server responds with a stream
-so that its start position corresponds to the requested time,
-for example:
-<example>
-http://example.com/elephants_dream.mp4?start=238.88
-</example>
-This allows for a random seeking at any time, or starting playback
-in the middle of a timeline.
-</para>
-
-<para>
-To support seeking, H.264-based formats store the metadata
-in the so-called “moov atom.”
-It is a part of the file that holds the index information for the
-whole file.
-</para>
-
-<para>
-To start playback, a player first needs to read metadata.
-This is done by sending a special request with the
-<parameter>start=0</parameter>
-argument.  Many encoding software will insert the metadata at
-the end of the file.  This is bad for pseudo-streaming:
-the metadata needs to be located at the beginning of the file,
-or else the entire file will have to be downloaded before it
-starts playing.  If a file is well-formed (with metadata at the
-beginning of a file), nginx just sends back the contents of a file.
-Otherwise, it has to read the file and prepare a new stream so that
-metadata comes before media data.
-This involves some CPU, memory, and disk I/O overhead,
-so it is a good idea to
-<link url="http://flowplayer.org/plugins/streaming/pseudostreaming.html#prepare">
-prepare an original file for pseudo-streaming</link>,
-rather than having nginx do this on every such request.
-</para>
-
-<para>
-For a matching request with a non-zero
-<parameter>start</parameter>
-argument, nginx will read metadata from the file, prepare the
-stream starting from the requested offset, and send it to a client.
-This has the same overhead as described above.
-</para>
-
-<para>
-If a matching request does not include the
-<parameter>start</parameter>
-argument, there is no overhead, and the file is just sent as a static resource.
-Some players also support byte-range requests, and thus do not require
-this module at all.
-</para>
-
-<para>
-This module is not built by default, it should be enabled with the
-<code>--with-http_mp4_module</code>
-configuration parameter.
-<note>
-If you were using the third-party mp4 module, be sure to disable it.
-</note>
-</para>
-
-<para>
-A similar pseudo-streaming support for FLV files is provided by the module
-<link doc="ngx_http_flv_module.xml">ngx_http_flv_module</link>.
-</para>
-
-</section>
-
-
-<section id="example" name="Example Configuration">
-
-<para>
-<example>
-location /video/ {
-    mp4;
-    mp4_buffer_size     1m;
-    mp4_max_buffer_size 5m;
-}
-</example>
-</para>
-
-</section>
-
-
-<section id="directives" name="Directives">
-
-<directive name="mp4">
-<syntax>mp4</syntax>
-<default/>
-<context>location</context>
-
-<para>
-Turns on module processing in a surrounding location.
-</para>
-
-</directive>
-
-
-<directive name="mp4_buffer_size">
-<syntax>mp4_buffer_size <argument>size</argument></syntax>
-<default>mp4_buffer_size 512K</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-Sets the initial size of a memory buffer used to process MP4 files.
-</para>
-
-</directive>
-
-
-<directive name="mp4_max_buffer_size">
-<syntax>mp4_max_buffer_size <argument>size</argument></syntax>
-<default>mp4_max_buffer_size 10M</default>
-<context>http</context>
-<context>server</context>
-<context>location</context>
-
-<para>
-During metadata processing, a larger buffer may become necessary.
-Its size cannot exceed the specified <argument>size</argument>,
-or else nginx will return the server error
-<http-status code="500" text="Internal Server Error"/>,
-and log the following:
-<example>
-"/some/movie/file.mp4" mp4 moov atom is too large:
-12583268, you may want to increase mp4_max_buffer_size
-</example>
-</para>
-
-</directive>
-
-</section>
-
-</module>
diff --git a/docs/xml/ngx_core_module.xml b/docs/xml/ngx_core_module.xml
deleted file mode 100644
index fef337f..0000000
--- a/docs/xml/ngx_core_module.xml
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE module SYSTEM "../dtd/module.dtd">
-
-<module name="Core Module" id="core_module">
-
-<section id="example" name="Example Configuration">
-
-<para>
-<example>
-user www www;
-worker_processes 2;
-
-error_log /var/log/nginx-error.log info;
-
-events {
-    use kqueue;
-    worker_connections 2048;
-}
-
-...
-</example>
-</para>
-
-</section>
-
-
-<section id="directives" name="Directives">
-
-<directive name="daemon">
-<syntax>daemon <value>on</value> | <value>off</value></syntax>
-<default>daemon on</default>
-<context>main</context>
-
-<para>
-Determines whether nginx should become a daemon.
-Mainly used during development.
-</para>
-
-</directive>
-
-
-<directive name="env">
-<syntax>env <argument>VAR</argument>[=<argument>VALUE</argument>]</syntax>
-<default>env TZ</default>
-<context>main</context>
-
-<para>
-Allows to limit a set of environment variables, change their values,
-or create new environment variables, for the following cases:
-<list type="bullet">
-
-<listitem>
-variable inheritance during a
-<link doc="control.xml" id="upgrade">live upgrade</link>
-of an executable file;
-</listitem>
-
-<listitem>
-use of variables by the module
-<link doc="http/ngx_http_perl_module.xml">ngx_http_perl_module</link>;
-</listitem>
-
-<listitem>
-use of variables by worker processes.
-Please bear in mind that controlling system libraries in this way
-is not always possible as it is not uncommon for libraries to check
-variables only during initialization, well before they can be set
-using this directive.
-An exception from this is an above mentioned
-<link doc="control.xml" id="upgrade">live upgrade</link>
-of an executable file.
-</listitem>
-
-</list>
-</para>
-
-<para>
-The TZ variable is always inherited and made available to the module
-<link doc="http/ngx_http_perl_module.xml">ngx_http_perl_module</link>,
-unless configured explicitly.
-</para>
-
-<para>
-Usage example:
-<example>
-env MALLOC_OPTIONS;
-env PERL5LIB=/data/site/modules;
-env OPENSSL_ALLOW_PROXY_CERTS=1;
-</example>
-</para>
-
-</directive>
-
-<directive name="include">
-<syntax>include <argument>file</argument> | <argument>mask</argument></syntax>
-<default/>
-<context/>
-
-<para>
-Includes another <argument>file</argument>, or files matching the
-specified <argument>mask</argument>, into configuration.
-Included files should consist of
-syntactically correct directives and blocks.
-</para>
-
-<para>
-Usage example:
-<example>
-include mime.types;
-include vhosts/*.conf;
-</example>
-</para>
-
-</directive>
-
-
-<directive name="master_process">
-<syntax>master_process <value>on</value> | <value>off</value></syntax>
-<default>master_process on</default>
-<context>main</context>
-
-<para>
-Determines whether worker processes are started.
-This directive is intended for nginx developers.
-</para>
-
-</directive>
-
-
-<directive name="pid">
-<syntax>pid <argument>file</argument></syntax>
-<default>pid nginx.pid</default>
-<context>main</context>
-
-<para>
-Defines a <argument>file</argument> which will store the process ID of the main process.
-</para>
-
-</directive>
-
-
-<directive name="ssl_engine">
-<syntax>ssl_engine <argument>device</argument></syntax>
-<default/>
-<context>main</context>
-
-<para>
-Defines the name of the hardware SSL accelerator.
-</para>
-
-</directive>
-
-
-<directive name="user">
-<syntax>user <argument>user</argument> [<argument>group</argument>]</syntax>
-<default>user nobody nobody</default>
-<context>main</context>
-
-<para>
-Defines <argument>user</argument> and <argument>group</argument>
-credentials used by worker processes.
-If <argument>group</argument> is omitted, a group whose name equals
-that of <argument>user</argument> is used.
-</para>
-
-</directive>
-
-
-<directive name="timer_resolution">
-<syntax>timer_resolution <argument>interval</argument></syntax>
-<default/>
-<context>main</context>
-
-<para>
-Reduces timer resolution in worker processes, thus reducing the
-number of <c-func>gettimeofday</c-func> system calls made.
-By default, <c-func>gettimeofday</c-func> is called each time
-on receiving a kernel event.
-With reduced resolution, <c-func>gettimeofday</c-func> is only
-called once per specified <argument>interval</argument>.
-</para>
-
-<para>
-Example:
-<example>
-timer_resolution 100ms;
-</example>
-</para>
-
-<para>
-An internal implementation of interval depends on the method used:
-<list type="bullet">
-
-<listitem>
-an <c-def>EVFILT_TIMER</c-def> filter if <value>kqueue</value> is used;
-</listitem>
-
-<listitem>
-<c-func>timer_create</c-func> if <value>eventport</value> is used;
-</listitem>
-
-<listitem>
-<c-func>setitimer</c-func> otherwise.
-</listitem>
-
-</list>
-</para>
-
-</directive>
-
-
-<directive name="worker_rlimit_core">
-<syntax>worker_rlimit_core <argument>size</argument></syntax>
-<default/>
-<context>main</context>
-
-<para>
-Changes the limit on the largest size of a core file
-(<c-def>RLIMIT_CORE</c-def>) for worker processes.
-Used to increase the limit without restarting the main process.
-</para>
-
-</directive>
-
-
-<directive name="worker_rlimit_nofile">
-<syntax>worker_rlimit_nofile <argument>number</argument></syntax>
-<default/>
-<context>main</context>
-
-<para>
-Changes the limit on the maximum number of open files
-(<c-def>RLIMIT_NOFILE</c-def>) for worker processes.
-Used to increase the limit without restarting the main process.
-</para>
-
-</directive>
-
-
-<directive name="worker_priority">
-<syntax>worker_priority <argument>number</argument></syntax>
-<default>worker_priority 0</default>
-<context>main</context>
-
-<para>
-Defines a scheduling priority for worker processes like is
-done by the <command>nice</command> command: a negative
-<argument>number</argument>
-means higher priority.
-Allowed range normally varies from -20 to 20.
-</para>
-
-<para>
-Example:
-<example>
-worker_priority -10;
-</example>
-</para>
-
-</directive>
-
-
-<directive name="worker_processes">
-<syntax>worker_processes <argument>number</argument></syntax>
-<default>worker_processes 1</default>
-<context>main</context>
-
-<para>
-Defines the number of worker processes.
-</para>
-
-</directive>
-
-
-<directive name="working_directory">
-<syntax>working_directory <argument>directory</argument></syntax>
-<default/>
-<context>main</context>
-
-<para>
-Defines a current working directory for a worker process.
-It is primarily used when writing a core-file, in which case
-a working process should have write permission for the
-specified directory.
-</para>
-
-</directive>
-
-</section>
-
-</module>
diff --git a/docs/xsls/content.xsls b/docs/xsls/content.xsls
deleted file mode 100644
index ef83c58..0000000
--- a/docs/xsls/content.xsls
+++ /dev/null
@@ -1,67 +0,0 @@
-X:stylesheet {
-
-    X:template = "section[@id and @name]" {
-        <a name="{@id}" /> <center><h4> !{@name} </h4></center>
-        !!;
-    }
-
-    X:template = "section[not(@id) and @name]" {
-        <center><h4> !{@name} </h4></center>
-        !!;
-    }
-
-    X:template = "section[not(@id) and not(@name)]" { !!; }
-
-    X:template = "para" { <p> !!; </p> }
-
-    X:template = "c-def" { <code> !!; </code> }
-
-    X:template = "c-func" { <code> !!; X:text{()} </code> }
-
-    X:template = "code" { <code> !!; </code> }
-
-    X:template = "command" { <code> !!; </code> }
-
-    X:template = "dq" {
-        X:text disable-output-escaping="yes" {&amp;ldquo;}
-        !!;
-        X:text disable-output-escaping="yes" {&amp;rdquo;}
-    }
-
-    X:template = "example" { <blockquote><pre> !!; </pre></blockquote> }
-
-    X:template = "emphasis" { <strong> !!; </strong> }
-
-    X:template = "header" { <code> !!; </code> }
-
-    X:template = "http-status" {
-        !{@code} X:text{ (} !{@text} X:text{)}
-    }
-
-    X:template = "link[@url]" { <a href="{@url}"> !!; </a> }
-    X:template = "link[@id and not(@doc)]" { <a href="#{@id}"> !!; </a> }
-    X:template = "link[@doc and not(@id)]" {
-        <a href="{substring-before(@doc, '.xml')}.html"> !!; </a>
-    }
-    X:template = "link[@id and @doc]" {
-        <a href="{substring-before(@doc, '.xml')}.html#{@id}"> !!; </a>
-    }
-    X:template = "link" { <u> !!; </u> }
-
-    X:template = "list[@type='bullet']" { <ul> !!; </ul> }
-    X:template = "list[@type='enum']" { <ol> !!; </ol> }
-    X:template = "listitem" { <li> !!; </li> }
-
-    X:template = "list[@type='tag']" { <dl compact=""> !!; </dl> }
-    X:template = "tag-name" { <dt> !!; </dt> }
-    X:template = "tag-desc" { <dd> !!; </dd> }
-
-    X:template = "pathname" { <code> !!; </code> }
-
-    X:template = "argument" { <code><i> !!; </i></code> }
-    X:template = "parameter" { <code> !!; </code> }
-
-    X:template = "value" { <code> !!; </code> }
-
-    X:template = "var" { <code> !!; </code> }
-}
diff --git a/docs/xsls/directive.xsls b/docs/xsls/directive.xsls
deleted file mode 100644
index 07ccf52..0000000
--- a/docs/xsls/directive.xsls
+++ /dev/null
@@ -1,51 +0,0 @@
-X:stylesheet {
-    
-    X:template = "directive" {
-        <hr/>
-        <a name="{@name}"/>
-        <!-- <center><h4> !{@name} </h4></center> -->
-        !! "syntax";
-        !! "default";
-        !! "context";
-        X:if "(@appeared-in)" {
-            <strong>appeared in version</strong>: !{@appeared-in}
-        }
-        !! "para";
-    }
-    
-    X:template = "syntax" {
-        X:if "position() = 1" {
-            <strong>syntax</strong>:
-        } else {
-            <code>&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;&#xA0;</code>
-        }
-        <code> !!; </code> <br/>
-    }
-    
-    X:template = "default" {
-        <strong>default</strong>:
-        X:if "count(text()) = 0" {
-            <strong>none</strong>
-        } else {
-            <code> !!; </code>
-        }
-        <br/>
-    }
-    
-    X:template = "context" {
-        X:if "position() = 1" {
-            <strong>context</strong>:
-        }
-        X:if "count(text()) = 0" {
-            <strong>any</strong>
-        } else {
-            <code> !!; </code>
-        }
-        X:if "position() != last()" {
-            X:text{, }
-        } else {
-            <br/>
-        }
-    }
-    
-}
diff --git a/docs/xsls/module.xsls b/docs/xsls/module.xsls
deleted file mode 100644
index 4743700..0000000
--- a/docs/xsls/module.xsls
+++ /dev/null
@@ -1,34 +0,0 @@
-X:stylesheet {
-
-X:output method="html" indent="no" encoding="utf-8";
-
-X:strip-space elements = "*";
-
-<!--
-  -- a current directory of a XSLT script is where the script is stored,
-  -- but not where XSLT processor has been started to run the script
-  -->
-X:param XML = "'../xml'";
-
-X:var ID = "/module/@id";
-
-X:include href = "directive.xslt";
-X:include href = "content.xslt";
-
-
-X:template = "/module" {
-    <html><head>
-
-    <title> !{@name} </title>
-
-    </head>
-    <body>
-
-    <center><h3> !{@name} </h3></center>
-    !!;
-
-    </body>
-    </html>
-}
-
-}
diff --git a/docs/xslt/content.xslt b/docs/xslt/content.xslt
deleted file mode 100644
index e6e9da6..0000000
--- a/docs/xslt/content.xslt
+++ /dev/null
@@ -1,199 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-   <xsl:template match="section[@id and @name]">
-
-      <a name="{@id}"/> 
-      <center>
-         <h4>
-            <xsl:value-of select="@name"/>
-         </h4>
-      </center>
-
-      <xsl:apply-templates/>
-   </xsl:template>
-
-   <xsl:template match="section[not(@id) and @name]">
-
-      <center>
-         <h4>
-            <xsl:value-of select="@name"/>
-         </h4>
-      </center>
-
-      <xsl:apply-templates/>
-   </xsl:template>
-
-   <xsl:template match="section[not(@id) and not(@name)]">
-      <xsl:apply-templates/>
-   </xsl:template>
-
-   <xsl:template match="para"> 
-      <p>
-         <xsl:apply-templates/>
-      </p>
-   </xsl:template>
-
-   <xsl:template match="c-def"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="c-func"> 
-      <code>
-         <xsl:apply-templates/>
-         <xsl:text>()</xsl:text>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="code"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="command"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="dq">
-
-      <xsl:text disable-output-escaping="yes">&amp;ldquo;</xsl:text>
-
-      <xsl:apply-templates/>
-
-      <xsl:text disable-output-escaping="yes">&amp;rdquo;</xsl:text>
-   </xsl:template>
-
-   <xsl:template match="example"> 
-      <blockquote>
-         <pre>
-            <xsl:apply-templates/>
-         </pre>
-      </blockquote>
-   </xsl:template>
-
-   <xsl:template match="emphasis"> 
-      <strong>
-         <xsl:apply-templates/>
-      </strong>
-   </xsl:template>
-
-   <xsl:template match="header"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="http-status">
-
-      <xsl:value-of select="@code"/>
-      <xsl:text> (</xsl:text>
-      <xsl:value-of select="@text"/>
-      <xsl:text>)</xsl:text>
-   </xsl:template>
-
-   <xsl:template match="link[@url]"> 
-      <a href="{@url}">
-         <xsl:apply-templates/>
-      </a>
-   </xsl:template>
-
-   <xsl:template match="link[@id and not(@doc)]"> 
-      <a href="#{@id}">
-         <xsl:apply-templates/>
-      </a>
-   </xsl:template>
-
-   <xsl:template match="link[@doc and not(@id)]">
-
-      <a href="{substring-before(@doc, '.xml')}.html">
-         <xsl:apply-templates/>
-      </a>
-   </xsl:template>
-
-   <xsl:template match="link[@id and @doc]">
-
-      <a href="{substring-before(@doc, '.xml')}.html#{@id}">
-         <xsl:apply-templates/>
-      </a>
-   </xsl:template>
-
-   <xsl:template match="link"> 
-      <u>
-         <xsl:apply-templates/>
-      </u>
-   </xsl:template>
-
-   <xsl:template match="list[@type='bullet']"> 
-      <ul>
-         <xsl:apply-templates/>
-      </ul>
-   </xsl:template>
-
-   <xsl:template match="list[@type='enum']"> 
-      <ol>
-         <xsl:apply-templates/>
-      </ol>
-   </xsl:template>
-
-   <xsl:template match="listitem"> 
-      <li>
-         <xsl:apply-templates/>
-      </li>
-   </xsl:template>
-
-   <xsl:template match="list[@type='tag']"> 
-      <dl compact="">
-         <xsl:apply-templates/>
-      </dl>
-   </xsl:template>
-
-   <xsl:template match="tag-name"> 
-      <dt>
-         <xsl:apply-templates/>
-      </dt>
-   </xsl:template>
-
-   <xsl:template match="tag-desc"> 
-      <dd>
-         <xsl:apply-templates/>
-      </dd>
-   </xsl:template>
-
-   <xsl:template match="pathname"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="argument"> 
-      <code>
-         <i>
-            <xsl:apply-templates/>
-         </i>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="parameter"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="value"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-   <xsl:template match="var"> 
-      <code>
-         <xsl:apply-templates/>
-      </code>
-   </xsl:template>
-
-</xsl:stylesheet>
diff --git a/docs/xslt/directive.xslt b/docs/xslt/directive.xslt
deleted file mode 100644
index 0bff2f4..0000000
--- a/docs/xslt/directive.xslt
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-   <xsl:template match="directive">
-
-      <hr/>
-
-      <a name="{@name}"/>
-        <!-- <center><h4><xsl:value-of select="@name"/> </h4></center> -->
-
-      <xsl:apply-templates select="syntax"/>
-
-      <xsl:apply-templates select="default"/>
-
-      <xsl:apply-templates select="context"/>
-
-      <xsl:if test="(@appeared-in)">
-
-         <strong>appeared in version</strong>:
-         <xsl:value-of select="@appeared-in"/>
-      </xsl:if>
-
-      <xsl:apply-templates select="para"/>
-   </xsl:template>
-
-   <xsl:template match="syntax">
-      <xsl:choose>
-
-         <xsl:when test="position() = 1">
-
-            <strong>syntax</strong>:
-         </xsl:when>
-
-         <xsl:otherwise>
-
-            <code>       </code>
-         </xsl:otherwise>
-      </xsl:choose>
-
-      <code>
-
-         <xsl:apply-templates/> 
-      </code>
-      <br/>
-   </xsl:template>
-
-   <xsl:template match="default">
-
-      <strong>default</strong>:
-      <xsl:choose>
-
-         <xsl:when test="count(text()) = 0">
-
-            <strong>none</strong>
-         </xsl:when>
-
-         <xsl:otherwise>
-
-            <code>
-               <xsl:apply-templates/>
-            </code>
-         </xsl:otherwise>
-      </xsl:choose>
-
-      <br/>
-   </xsl:template>
-
-   <xsl:template match="context">
-
-      <xsl:if test="position() = 1">
-
-         <strong>context</strong>:
-      </xsl:if>
-      <xsl:choose>
-
-         <xsl:when test="count(text()) = 0">
-
-            <strong>any</strong>
-         </xsl:when>
-
-         <xsl:otherwise>
-
-            <code>
-               <xsl:apply-templates/>
-            </code>
-         </xsl:otherwise>
-      </xsl:choose>
-      <xsl:choose>
-
-         <xsl:when test="position() != last()">
-
-            <xsl:text>, </xsl:text>
-         </xsl:when>
-
-         <xsl:otherwise>
-
-            <br/>
-         </xsl:otherwise>
-      </xsl:choose>
-   </xsl:template>
-
-</xsl:stylesheet>
diff --git a/docs/xslt/module.xslt b/docs/xslt/module.xslt
deleted file mode 100644
index ca29948..0000000
--- a/docs/xslt/module.xslt
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-
-   <xsl:output indent="no" encoding="utf-8" method="html"/>
-
-   <xsl:strip-space elements="*"/>
-
-   <xsl:param select="'../xml'" name="XML"/>
-
-   <xsl:variable select="/module/@id" name="ID"/>
-
-   <xsl:include href="directive.xslt"/>
-
-   <xsl:include href="content.xslt"/>
-
-   <xsl:template match="/module">
-
-      <html>
-         <head>
-
-            <title>
-               <xsl:value-of select="@name"/>
-            </title>
-
-         </head>
-
-         <body>
-
-            <center>
-               <h3>
-                  <xsl:value-of select="@name"/>
-               </h3>
-            </center>
-
-            <xsl:apply-templates/>
-
-         </body>
-
-      </html>
-   </xsl:template>
-
-</xsl:stylesheet>
