Alias "/secure" "/webpages/secure"
<Directory "/webpages/secure">
Require all granted
-
+
AuthBasicProvider file
-
+
AuthType Basic
AuthName LDAP_Protected_Place
-
+
#implied OR operation
Require ldap-group-alias1
Require ldap-group-alias2
with <code>KnockKnock/2.0</code> will be allowed access, and all
others will be denied.</p>
- <p>When the server looks up a path via an internal
- <a class="glossarylink" href="../glossary.html#subrequest" title="see glossary">subrequest</a> such as looking
- for a <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>
+ <p>When the server looks up a path via an internal
+ <a class="glossarylink" href="../glossary.html#subrequest" title="see glossary">subrequest</a> such as looking
+ for a <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>
or generating a directory listing with <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>,
- per-request environment variables are <em>not</em> inherited in the
- subrequest. Additionally,
+ per-request environment variables are <em>not</em> inherited in the
+ subrequest. Additionally,
<code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> directives
are not separately evaluated in the subrequest due to the API phases
<code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code> takes action in.</p>
<pre class="prettyprint lang-config"><RequireAll>
Require expr "!(%{QUERY_STRING} =~ /secret/)"
- Require expr "%{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
+ Require expr "%{REQUEST_URI} in { '/example.cgi', '/other.cgi' }"
</RequireAll></pre>
<p>The syntax is described in the <a href="../expr.html">ap_expr</a>
- documentation.</p>
+ documentation. Before httpd 2.4.16, the surrounding double-quotes MUST be
+ omitted.</p>
<p>Normally, the expression is evaluated before authentication. However, if
the expression returns false and references the variable
<div class="warning"><h3>Security Warning</h3>
<p>Exercise caution when setting authorization directives in
<code class="directive"><a href="../mod/core.html#location">Location</a></code> sections
- that overlap with content served out of the filesystem.
+ that overlap with content served out of the filesystem.
By default, these <a href="../sections.html#merging">configuration sections</a> overwrite authorization configuration
- in <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>,
+ in <code class="directive"><a href="../mod/core.html#directory">Directory</a></code>,
and <code class="directive"><a href="../mod/core.html#files">Files</a></code> sections.</p>
- <p>The <code class="directive"><a href="#authmerging">AuthMerging</a></code> directive
- can be used to control how authorization configuration sections are
+ <p>The <code class="directive"><a href="#authmerging">AuthMerging</a></code> directive
+ can be used to control how authorization configuration sections are
merged.</p>
</div>
<p>This module does not provide any configuration directives of its own.
It requires the services of <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>, and
-provides the <code>byrequests</code> load balancing method..</p>
+provides the <code>byrequests</code> load balancing method.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>Topics</h3>
<ul id="topics">
<p>This module does not provide any configuration directives of its own.
It requires the services of <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>, and
-provides the <code>bytraffic</code> load balancing method..</p>
+provides the <code>bytraffic</code> load balancing method.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3>Topics</h3>
<ul id="topics">
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.3 and later</td></tr></table>
<h3>Summary</h3>
-<p>lbmethod=heartbeat uses the services of <code class="module"><a href="../mod/mod_heartmonitor.html">mod_heartmonitor</a></code> to balance between origin servers that are providing
+<p><code>lbmethod=heartbeat</code> uses the services of <code class="module"><a href="../mod/mod_heartmonitor.html">mod_heartmonitor</a></code> to balance between origin servers that are providing
heartbeat info via the <code class="module"><a href="../mod/mod_heartbeat.html">mod_heartbeat</a></code> module.</p>
<p> This modules load balancing algorithm favors servers with more ready (idle)
-capacity over time, but does not select the server with the most ready capacity
-every time. Servers that have 0 active clients are penalized, with the
+capacity over time, but does not select the server with the most ready capacity
+every time. Servers that have 0 active clients are penalized, with the
assumption that they are not fully initialized.</p>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3 class="directives">Directives</h3>
<div class="section">
<h2><a name="scheduler" id="scheduler">Load balancer scheduler algorithm</a></h2>
- <p>At present, there are 3 load balancer scheduler algorithms available
- for use: Request Counting, Weighted Traffic Counting and Pending Request
- Counting. These are controlled via the <code>lbmethod</code> value of
+ <p>At present, there are 4 load balancer scheduler algorithms available
+ for use: Request Counting (<code class="module"><a href="../mod/mod_lbmethod_byrequests.html">mod_lbmethod_byrequests</a></code>),
+ Weighted Traffic Counting (<code class="module"><a href="../mod/mod_lbmethod_bytraffic.html">mod_lbmethod_bytraffic</a></code>),
+ Pending Request Counting (<code class="module"><a href="../mod/mod_lbmethod_bybusyness.html">mod_lbmethod_bybusyness</a></code>) and
+ Heartbeat Traffic Counting (<code class="module"><a href="../mod/mod_lbmethod_heartbeat.html">mod_lbmethod_heartbeat</a></code>).
+ These are controlled via the <code>lbmethod</code> value of
the Balancer definition. See the <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>
directive for more information, especially regarding how to
configure the Balancer and BalancerMembers.</p>
BalancerMember "http://192.168.1.50:80"
BalancerMember "http://192.168.1.51:80"
</Proxy>
-ProxyPass "/test" "balancer://mycluster"
+ProxyPass "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"</pre>
BalancerMember "http://192.168.1.51:80" route=2
ProxySet stickysession=ROUTEID
</Proxy>
-ProxyPass "/test" "balancer://mycluster"
+ProxyPass "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"</pre>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<tr><th><a href="module-dict.html#SourceFile">SourceĀ File:</a></th><td>mod_slotmem_plain.c</td></tr></table>
<h3>Summary</h3>
- <p><code>mod_slotmem_plain</code> is a memory provider which
+ <p><code class="module"><a href="../mod/mod_slotmem_plain.html">mod_slotmem_plain</a></code> is a memory provider which
provides for creation and access to a plain memory segment
in which the datasets are organized in "slots."
</p>
<code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code>.
</p>
- <p><code>mod_slotmem_plain</code> provides the following API functions:
+ <p><code class="module"><a href="../mod/mod_slotmem_plain.html">mod_slotmem_plain</a></code> provides the following API functions:
</p>
- <dl>
- <dt>apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>
- <dd>call the callback on all worker slots</dd>
+<pre class="prettyprint lang-c">/* call the callback on all worker slots */
+apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
- <dt>apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)</dt>
- <dd>create a new slotmem with each item size is item_size.</dd>
+/* create a new slotmem with each item size is item_size */
+apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)
- <dt>apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)</dt>
- <dd>attach to an existing slotmem.</dd>
+/* attach to an existing slotmem */
+apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
- <dt>apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)</dt>
- <dd>get the direct pointer to the memory associated with this worker slot.</dd>
+/* get the direct pointer to the memory associated with this worker slot */
+apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void **mem)
- <dt>apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)</dt>
- <dd>get/read the memory from this slot to dest</dd>
+/* get/read the memory from this slot to dest */
+apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)
- <dt>apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)</dt>
- <dd>put/write the data from src to this slot</dd>
+/* put/write the data from src to this slot */
+apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)
- <dt>unsigned int num_slots(ap_slotmem_instance_t *s)</dt>
- <dd>return the total number of slots in the segment</dd>
+/* return the total number of slots in the segment */
+unsigned int num_slots(ap_slotmem_instance_t *s)
- <dt>apr_size_t slot_size(ap_slotmem_instance_t *s)</dt>
- <dd>return the total data size, in bytes, of a slot in the segment</dd>
+/* return the total data size, in bytes, of a slot in the segment */
+apr_size_t slot_size(ap_slotmem_instance_t *s)
- <dt>apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id);</dt>
- <dd>grab or allocate the first free slot and mark as in-use (does not do any data copying)</dd>
+/* grab or allocate the first free slot and mark as in-use (does not do any data copying) */
+apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id)
+
+/* forced grab or allocate the specified slot and mark as in-use (does not do any data copying) */
+apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id)
+
+/* release or free a slot and mark as not in-use (does not do any data copying) */
+apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id)</pre>
- <dt>apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>forced grab or allocate the specified slot and mark as in-use (does not do any data copying)</dd>
-
- <dt>apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>release or free a slot and mark as not in-use (does not do any data copying)</dd>
- </dl>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3 class="directives">Directives</h3>
<tr><th><a href="module-dict.html#SourceFile">SourceĀ File:</a></th><td>mod_slotmem_shm.c</td></tr></table>
<h3>Summary</h3>
- <p><code>mod_slotmem_shm</code> is a memory provider which
+ <p><code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code> is a memory provider which
provides for creation and access to a shared memory segment
in which the datasets are organized in "slots."
</p>
<code class="directive"><a href="../mod/core.html#defaultruntimedir">DefaultRuntimeDir</a></code> directive.
</p>
- <p><code>mod_slotmem_shm</code> provides the following API functions:
+ <p><code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code> provides the following API functions:
</p>
- <dl>
- <dt>apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>
- <dd>call the callback on all worker slots</dd>
+<pre class="prettyprint lang-c">/* call the callback on all worker slots */
+apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
- <dt>apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)</dt>
- <dd>create a new slotmem with each item size is item_size. <code>name</code> is used to generate a filename for the persistent store of
- the shared memory if configured. Values are:
- <dl>
- <dt><code>"none"</code></dt>
- <dd><code>Anonymous shared memory and no persistent store</code></dd>
- <dt><code>"file-name"</code></dt>
- <dd><code>[DefaultRuntimeDir]/file-name</code></dd>
- <dt><code>"/absolute-file-name"</code></dt>
- <dd><code>Absolute file name</code></dd>
- </dl></dd>
+/* create a new slotmem with each item size is item_size. 'name' is used to generate a filename for the persistent
+ store of the shared memory if configured. Values are:
+ "none" - Anonymous shared memory and no persistent store
+ "file-name" - [DefaultRuntimeDir]/file-name
+ "/absolute-file-name" - Absolute file name */
+apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)
- <dt>apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)</dt>
- <dd>attach to an existing slotmem. See <code>create</code> for description of <code>name</code> parameter.</dd>
+/* attach to an existing slotmem. See 'create()' for description of 'name' parameter */
+apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
- <dt>apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)</dt>
- <dd>get the direct pointer to the memory associated with this worker slot.</dd>
+/* get the direct pointer to the memory associated with this worker slot */
+apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void **mem)
- <dt>apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)</dt>
- <dd>get/read the memory from this slot to dest</dd>
+/* get/read the memory from this slot to dest */
+apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)
- <dt>apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)</dt>
- <dd>put/write the data from src to this slot</dd>
+/* put/write the data from src to this slot */
+apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)
- <dt>unsigned int num_slots(ap_slotmem_instance_t *s)</dt>
- <dd>return the total number of slots in the segment</dd>
+/* return the total number of slots in the segment */
+unsigned int num_slots(ap_slotmem_instance_t *s)
- <dt>apr_size_t slot_size(ap_slotmem_instance_t *s)</dt>
- <dd>return the total data size, in bytes, of a slot in the segment</dd>
+/* return the total data size, in bytes, of a slot in the segment */
+apr_size_t slot_size(ap_slotmem_instance_t *s)
- <dt>apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id);</dt>
- <dd>grab or allocate the first free slot and mark as in-use (does not do any data copying)</dd>
+/* grab or allocate the first free slot and mark as in-use (does not do any data copying) */
+apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id)
- <dt>apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>forced grab or allocate the specified slot and mark as in-use (does not do any data copying)</dd>
+/* forced grab or allocate the specified slot and mark as in-use (does not do any data copying) */
+apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id)
+
+/* release or free a slot and mark as not in-use (does not do any data copying) */
+apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id)</pre>
- <dt>apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>release or free a slot and mark as not in-use (does not do any data copying)</dd>
- </dl>
</div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><h3 class="directives">Directives</h3>
via <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code> configurable logging formats:</p>
<pre class="prettyprint lang-config">LogFormat "%{Apache}n %r %t" usertrack
-CustomLog logs/clickstream.log usertrack</pre>
+CustomLog "logs/clickstream.log" usertrack</pre>
</div>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Format of the cookie header field</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieStyle
- <em>Netscape|Cookie|Cookie2|RFC2109|RFC2965</em></code></td></tr>
+ Netscape|Cookie|Cookie2|RFC2109|RFC2965</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CookieStyle Netscape</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
<tr class="odd"><td><a href="mod_usertrack.html#cookieexpires">CookieExpires <em>expiry-period</em></a></td><td></td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Expiry time for the tracking cookie</td></tr>
<tr><td><a href="mod_usertrack.html#cookiename">CookieName <em>token</em></a></td><td> Apache </td><td>svdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Name of the tracking cookie</td></tr>
<tr class="odd"><td><a href="mod_usertrack.html#cookiestyle">CookieStyle
- <em>Netscape|Cookie|Cookie2|RFC2109|RFC2965</em></a></td><td> Netscape </td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Format of the cookie header field</td></tr>
+ Netscape|Cookie|Cookie2|RFC2109|RFC2965</a></td><td> Netscape </td><td>svdh</td><td>E</td></tr><tr class="odd"><td class="descr" colspan="4">Format of the cookie header field</td></tr>
<tr><td><a href="mod_usertrack.html#cookietracking">CookieTracking on|off</a></td><td> off </td><td>svdh</td><td>E</td></tr><tr><td class="descr" colspan="4">Enables tracking cookie</td></tr>
<tr class="odd"><td><a href="mpm_common.html#coredumpdirectory">CoreDumpDirectory <var>directory</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Directory where Apache HTTP Server attempts to
switch before dumping core</td></tr>
[ -<strong>L</strong> <var>linkname</var> ]
[ -<strong>p</strong> <var>program</var> ]
[ -<strong>f</strong> ]
+ [ -<strong>D</strong> ]
[ -<strong>t</strong> ]
[ -<strong>v</strong> ]
[ -<strong>e</strong> ]
associated logfile does not "exist" until then, which
causes problems from some automated logging tools)</dd>
+<dt><code>-D</code></dt>
+<dd>Creates the parent directories of the path that the log file will be
+placed in if they do not already exist. This allows <code>strftime(3)</code>
+formatting to be used in the path and not just the filename.</dd>
+
<dt><code>-t</code></dt>
<dd>Causes the logfile to be truncated instead of rotated. This is
useful when a log is processed in real time by a command like tail,