diff options
author | Henning Brauer <henning@cvs.openbsd.org> | 2003-08-21 13:11:42 +0000 |
---|---|---|
committer | Henning Brauer <henning@cvs.openbsd.org> | 2003-08-21 13:11:42 +0000 |
commit | 5f1108e4f87420e53b0bd9953a39c0a6fc9cb0f5 (patch) | |
tree | 9b4a79380c1a4e0cb136ebc6a6468d0bad933b5c /usr.sbin/httpd/htdocs/manual | |
parent | 0a50fcbf3995ed3b777d579b957bd652a5884b0e (diff) |
merge
Diffstat (limited to 'usr.sbin/httpd/htdocs/manual')
93 files changed, 3589 insertions, 1361 deletions
diff --git a/usr.sbin/httpd/htdocs/manual/LICENSE b/usr.sbin/httpd/htdocs/manual/LICENSE index de6706f26e0..886dacf5191 100644 --- a/usr.sbin/httpd/htdocs/manual/LICENSE +++ b/usr.sbin/httpd/htdocs/manual/LICENSE @@ -1,7 +1,7 @@ /* ==================================================================== * The Apache Software License, Version 1.1 * - * Copyright (c) 2000 The Apache Software Foundation. All rights + * Copyright (c) 2000-2003 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without diff --git a/usr.sbin/httpd/htdocs/manual/TODO b/usr.sbin/httpd/htdocs/manual/TODO new file mode 100644 index 00000000000..975ac8e68ea --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/TODO @@ -0,0 +1,4 @@ +Documentation changes/enhancements needed: + +- Documentation for mod_expires +- Documentation for Satisfy diff --git a/usr.sbin/httpd/htdocs/manual/cygwin.html b/usr.sbin/httpd/htdocs/manual/cygwin.html index e41b7eb45c8..cf134065896 100644 --- a/usr.sbin/httpd/htdocs/manual/cygwin.html +++ b/usr.sbin/httpd/htdocs/manual/cygwin.html @@ -110,7 +110,7 @@ from Apache 1.3.20 and later. Pre-compiled binaries for the Cygwin platform (without the <code>cygwin1.dll</code>) will be supplied at <a - href="http://www.apache.org/httpd">http://www.apache.org/httpd</a> + href="http://httpd.apache.org/">http://httpd.apache.org/</a> for each released version.</p> <h2><a id="diff" name="diff">Differences from Apache for @@ -169,7 +169,7 @@ <p><strong>What are the differences in the configuration files?</strong><br /> While the Apache for Windows port uses Windows native path - names to refer files and directorys, like</p> + names to refer files and directories, like</p> <pre> # httpd.conf (for Windows) DocumentRoot "c:/apache/htdocs" @@ -201,7 +201,7 @@ <p>Cygwin 1.x is required to compile and run this version. Cygwin 1.3.9 and 1.3.10 have been tested and approved on both - supported OSes. We suggest to use Cygwin 1.3.9-2 and higher.</p> + supported OSes. We suggest using Cygwin 1.3.9-2 and higher.</p> <p><strong>Note:</strong>If you want to compile shared DLL modules using <a @@ -275,7 +275,7 @@ </pre> <p>This will produce the required extra libraries or object - files which hold all static linked code. Then + files that hold all static linked code. Then <code>dllwrap</code> and <code>dlltool</code> will export all of those (including any additional module code) to the shared <code>cyghttpd.dll</code> and create the @@ -330,11 +330,11 @@ trying to link the shared DLL modules <code>mod_foo.dll</code>.</p> - <p>Unfortunatly while Apache's build process the shared + <p>Unfortunately, during Apache's build process, the shared modules are linked before the shared core import library <code>src/cyghttpd.dll</code> has been made. The shared modules depend on this import library, so - they can not link for the first time you run + they cannot link for the first time you run <code>make</code>.</p> </li> @@ -350,8 +350,8 @@ <p>All shared modules are placed into <code>libexec</code>, including the shared core DLL <code>cyghttpd.dll</code>. When Apache's - <code>/bin/httpd</code> is started it has to dynamicly - link <code>cyghttpd.dll</code> while runtime. That is + <code>/bin/httpd</code> is started, it has to dynamically + link <code>cyghttpd.dll</code> during runtime; that is why you have to place the shared core DLL <code>cyghttpd.dll</code> to the same directory where <code>httpd.exe</code> resides, i.e. @@ -421,7 +421,7 @@ </ul> - <h2><a id="inst" name="inst">Using Win32 native socket + <h2><a id="winsock" name="winsock">Using Win32 native socket implementation instead</a></h2> <p>Apache for Cygwin supports an option to use the Win32 native diff --git a/usr.sbin/httpd/htdocs/manual/dns-caveats.html.en b/usr.sbin/httpd/htdocs/manual/dns-caveats.html.en index 3d472f49c75..515343fa1c9 100644 --- a/usr.sbin/httpd/htdocs/manual/dns-caveats.html.en +++ b/usr.sbin/httpd/htdocs/manual/dns-caveats.html.en @@ -196,7 +196,7 @@ <p>A possible work around to the theft of service attack described above would be to perform a reverse DNS lookup on the - ip address returned by the forward lookup and compare the two + IP address returned by the forward lookup and compare the two names. In the event of a mismatch the virtualhost would be disabled. This would require reverse DNS to be configured properly (which is something that most admins are familiar with diff --git a/usr.sbin/httpd/htdocs/manual/dns-caveats.html.html b/usr.sbin/httpd/htdocs/manual/dns-caveats.html.html index bd3702e551f..0d47f605fe0 100644 --- a/usr.sbin/httpd/htdocs/manual/dns-caveats.html.html +++ b/usr.sbin/httpd/htdocs/manual/dns-caveats.html.html @@ -198,7 +198,7 @@ <p>A possible work around to the theft of service attack described above would be to perform a reverse DNS lookup on the - ip address returned by the forward lookup and compare the two + IP address returned by the forward lookup and compare the two names. In the event of a mismatch the virtualhost would be disabled. This would require reverse DNS to be configured properly (which is something that most admins are familiar with diff --git a/usr.sbin/httpd/htdocs/manual/ebcdic.html b/usr.sbin/httpd/htdocs/manual/ebcdic.html index 1f7cf83b790..9424bf3a316 100644 --- a/usr.sbin/httpd/htdocs/manual/ebcdic.html +++ b/usr.sbin/httpd/htdocs/manual/ebcdic.html @@ -26,7 +26,7 @@ set as their native codeset.<br /> (Initially, that support covered only the Fujitsu-Siemens family of mainframes running the <a - href="http://www.fujitsu-siemens.com/servers/bs2osd/osdbc_us.htm"> + href="http://www.fujitsu-siemens.com/rl/products/software/bs2000bc.html"> BS2000/OSD operating system</a>, a mainframe OS which features a SVR4-derived POSIX subsystem. Later, the two IBM mainframe operating systems TPF and OS/390 were added).</p> diff --git a/usr.sbin/httpd/htdocs/manual/env.html.en b/usr.sbin/httpd/htdocs/manual/env.html.en index 88dad998deb..e43a1247e05 100644 --- a/usr.sbin/httpd/htdocs/manual/env.html.en +++ b/usr.sbin/httpd/htdocs/manual/env.html.en @@ -69,17 +69,17 @@ <td valign="top"><strong>Related Directives</strong><br /> <br /> <a - href="mod/mod_setenvif.html#BrowserMatch">BrowserMatch</a><br /> + href="mod/mod_setenvif.html#browsermatch">BrowserMatch</a><br /> <a - href="mod/mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a><br /> + href="mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a><br /> <a href="mod/mod_env.html#passenv">PassEnv</a><br /> <a href="mod/mod_rewrite.html#RewriteRule">RewriteRule</a><br /> <a href="mod/mod_env.html#setenv">SetEnv</a><br /> <a - href="mod/mod_setenvif.html#SetEnvIf">SetEnvIf</a><br /> + href="mod/mod_setenvif.html#setenvif">SetEnvIf</a><br /> <a - href="mod/mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</a><br /> + href="mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a><br /> <a href="mod/mod_env.html#unsetenv">UnsetEnv</a><br /> </td> </tr> diff --git a/usr.sbin/httpd/htdocs/manual/env.html.html b/usr.sbin/httpd/htdocs/manual/env.html.html index 3572a6f6079..1b79aa7c653 100644 --- a/usr.sbin/httpd/htdocs/manual/env.html.html +++ b/usr.sbin/httpd/htdocs/manual/env.html.html @@ -71,17 +71,17 @@ <td valign="top"><strong>Related Directives</strong><br /> <br /> <a - href="mod/mod_setenvif.html#BrowserMatch">BrowserMatch</a><br /> + href="mod/mod_setenvif.html#browsermatch">BrowserMatch</a><br /> <a - href="mod/mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a><br /> + href="mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a><br /> <a href="mod/mod_env.html#passenv">PassEnv</a><br /> <a href="mod/mod_rewrite.html#RewriteRule">RewriteRule</a><br /> <a href="mod/mod_env.html#setenv">SetEnv</a><br /> <a - href="mod/mod_setenvif.html#SetEnvIf">SetEnvIf</a><br /> + href="mod/mod_setenvif.html#setenvif">SetEnvIf</a><br /> <a - href="mod/mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</a><br /> + href="mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a><br /> <a href="mod/mod_env.html#unsetenv">UnsetEnv</a><br /> </td> </tr> diff --git a/usr.sbin/httpd/htdocs/manual/env.html.ja.jis b/usr.sbin/httpd/htdocs/manual/env.html.ja.jis index 961bbb0ae2c..13bc6eb1ffc 100644 --- a/usr.sbin/httpd/htdocs/manual/env.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/env.html.ja.jis @@ -8,7 +8,7 @@ <title>Apache $B$N4D6-JQ?t(B</title> </head> - <!-- English revision: 1.18 --> + <!-- English revision: 1.20 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -66,17 +66,17 @@ <td valign="top"><strong>$B4XO"%G%#%l%/%F%#%V(B</strong><br /> <br /> <a - href="mod/mod_setenvif.html#BrowserMatch">BrowserMatch</a><br /> + href="mod/mod_setenvif.html#browsermatch">BrowserMatch</a><br /> <a - href="mod/mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a><br /> + href="mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a><br /> <a href="mod/mod_env.html#passenv">PassEnv</a><br /> <a href="mod/mod_rewrite.html#RewriteRule">RewriteRule</a><br /> <a href="mod/mod_env.html#setenv">SetEnv</a><br /> <a - href="mod/mod_setenvif.html#SetEnvIf">SetEnvIf</a><br /> + href="mod/mod_setenvif.html#setenvif">SetEnvIf</a><br /> <a - href="mod/mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</a><br /> + href="mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a><br /> <a href="mod/mod_env.html#unsetenv">UnsetEnv</a><br /> </td> </tr> @@ -261,6 +261,20 @@ <p>$B$3$l$,@_Dj$5$l$F$$$k>l9g$O!"(B<a href="mod/core.html#keepalive" >KeepAlive</a> $B$r;HMQ$7$J$$$h$&$K$7$^$9!#(B</p> + + <h2>suppress-error-charset</h2> + <p><i>1.3.26 $B$H(B 2.0.40 $B0J9_$N%P!<%8%g%s$G;HMQ2DG=(B</i></p> + <p>Apache $B$,%/%i%$%"%s%H$N%j%/%(%9%H$K1~$8$F%j%@%$%l%/%H$r9T$J$&$H$-!"(B + $B%l%9%]%s%9$K$O%/%i%$%"%s%H$,<+F0E*$K%j%@%$%l%/%H$rDI$($J$$(B($BDI$o$J$$(B)$B$H$-$N(B + $B$?$a$KI=<($5$l$k%F%-%9%H$,4^$^$l$F$$$^$9!#(BApache $B$ODL>o$O$3$N%F%-%9%H$O(B + $B;H$o$l$F$$$kJ8;z%;%C%H$G$"$k(B ISO-8859-1 $B$H$7$^$9!#(B</p> + <p>$B$7$+$7!"%j%@%$%l%/%H@h$,JL$NJ8;z%;%C%H$r;H$C$F$$$k>l9g!"(B + $BI8=`$K=`5r$7$F$$$J$$%V%i%&%6$G$O!"%j%@%$%l%/%H@h$N<B:]$NJ8;z%;%C%H$N(B + $BBe$o$j$K!"%j%@%$%l%/%H85$NJ8;z%;%C%H$r;H$C$F$7$^$&$3$H$,$"$j$^$9!#(B + $B$3$l$O!"Nc$($P%.%j%7%cJ8;z$,J8;z2=$1$7$?$j$9$k$3$H$K$J$j$^$9!#(B</p> + <p>$B$3$N4D6-JQ?t$r@_Dj$9$k$H!"(B Apache $B$O%j%@%$%l%/%H85$N%F%-%9%H$NJ8;z%;%C%H(B + $B$O>JN,$9$k$h$&$K$J$j!"$=$N$h$&$JI8=`$K=`5r$7$F$$$J$$%V%i%&%6$G$b%j%@%$%l%/%H(B + $B@h$NJ8;z%;%C%H$r@5$7$/;H$&$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B</p> <hr /> <h2><a id="examples" name="examples">$BNc(B</a></h2> diff --git a/usr.sbin/httpd/htdocs/manual/host.html b/usr.sbin/httpd/htdocs/manual/host.html new file mode 100644 index 00000000000..74639a5b5fb --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/host.html @@ -0,0 +1,185 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html><head> +<title>Apache non-IP Virtual Hosts</title> +</head> + +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.2 + </H3> +</DIV> + +<h1 ALIGN="CENTER">Apache non-IP Virtual Hosts</h1> + +<strong>See Also:</strong> +<a href="virtual-host.html">Virtual Host Support</a> + +<hr> + +<h2>What is a Virtual Host</h2> + +<p>The "Virtual Host" refers to the practice of maintaining more than +one server on one machine, as differentiated by their apparent +hostname. For example, it is often desirable for companies sharing a +web server to have their own domains, with web servers accessible as +<code>www.company1.com</code> and <code>www.company2.com</code>, +without requiring the user to know any extra path information.</p> + +<p>Apache was one of the first servers to support virtual hosts right +out of the box, but since the base <code>HTTP</code> (HyperText +Transport Protocol) standard does not allow any method for the server +to determine the hostname it is being addressed as, Apache's virtual +host support has required a separate IP address for each +server. Documentation on using this approach (which still works very +well) <a href="virtual-host.html">is available</a>. + +<p>While the approach described above works, with the available IP +address space growing smaller, and the number of domains increasing, +it is not the most elegant solution, and is hard to implement on some +machines. The <code>HTTP/1.1</code> protocol contains a method for the +server to identify what name it is being addressed as. Apache 1.1 and +later support this approach as well as the traditional +IP-address-per-hostname method.</p> + +<p>The benefits of using the new virtual host support is a practically +unlimited number of servers, ease of configuration and use, and +requires no additional hardware or software. The main disadvantage is +that the user's browser must support this part of the protocol. The +latest versions of many browsers (including Netscape Navigator 2.0 and +later) do, but many browsers, especially older ones, do not. This can +cause problems, although a possible solution is addressed below.</p> + +<h2>Using non-IP Virtual Hosts</h2> + +<p>Using the new virtual hosts is quite easy, and superficially looks +like the old method. You simply add to one of the Apache configuration +files (most likely <code>httpd.conf</code> or <code>srm.conf</code>) +code similar to the following:</p> +<pre> + <VirtualHost www.apache.org> + ServerName www.apache.org + DocumentRoot /usr/web/apache + </VirtualHost> +</pre> + +<p>Of course, any additional directives can (and should) be placed +into the <code><VirtualHost></code> section. To make this work, +all that is needed is to make sure that the <code>www.apache.org</code> +DNS entry points to the same IP address as the main +server. Optionally, you could simply use that IP address in the +<VirtualHost> entry.</p> + +<p>Additionally, many servers may wish to be accessible by more than +one name. For example, the Apache server might want to be accessible +as <code>apache.org</code>, or <code>ftp.apache.org</code>, assuming +the IP addresses pointed to the same server. In fact, one might want it +so that all addresses at <code>apache.org</code> were picked up by the +server. This is possible with the <code>ServerAlias</code> +directive, placed inside the <VirtualHost> section. For +example:</p> + +<pre> + ServerAlias apache.org *.apache.org +</pre> + +<p>Note that you can use <code>*</code> and <code>?</code> as wild-card +characters.</p> + +<p>You also might need ServerAlias if you are serving local users who +do not always include the domain name. For example, if local users are +familiar with typing "www" or "www.physics" then you will need to add +<code>ServerAlias www www.physics</code>. It isn't possible for the +server to know what domain the client uses for their name resolution +because the client doesn't provide that information in the request.</p> + +<h2>Security Considerations</h2> + +Apache allows all virtual hosts to be made accessible via the +<code>Host:</code> header through all IP interfaces, even those which +are configured to use different IP interfaces. For example, if the +configuration for <code>www.foo.com</code> contained a virtual host +section for <code>www.bar.com</code>, and <code>www.bar.com</code> was +a separate IP interface, such that +non-<code>Host:</code>-header-supporting browsers can use it, as +before with Apache 1.0. If a request is made to +<code>www.foo.com</code> and the request includes the header +<code>Host: www.bar.com</code>, a page from <code>www.bar.com</code> +will be sent. + +<P> + +This is a security concern if you are controlling access to a +particular server based on IP-layer controls, such as from within a +firewall or router. Let's say <code>www.bar.com</code> in the above +example was instead an intra-net server called +<code>private.foo.com</code>, and the router used by foo.com only let +internal users access <code>private.foo.com</code>. Obviously, +<code>Host:</code> header functionality now allows someone who has +access to <code>www.foo.com</code> to get +<code>private.foo.com</code>, if they send a <code>Host: +private.foo.com</code> header. It is important to note that this +condition exists only if you only implement this policy at the IP +layer - all security controls used by Apache (i.e., <A +HREF="mod/mod_access.html">allow, deny from,</A> etc.) are consistently +respected. + +<h2>Compatibility with Older Browsers</h2> + +<p>As mentioned earlier, a majority of browsers do not send the +required data for the new virtual hosts to work properly. These +browsers will always be sent to the main server's pages. There is a +workaround, albeit a slightly cumbersome one:</p> + +<p>To continue the <code>www.apache.org</code> example (Note: Apache's +web server does not actually function in this manner), we might use the +new <code>ServerPath</code> directive in the <code>www.apache.org</code> virtual host, +for example: + +<pre> + ServerPath /apache +</pre> +<p>What does this mean? It means that a request for any file beginning +with "<code>/apache</code>" will be looked for in the Apache +docs. This means that the pages can be accessed as +<code>http://www.apache.org/apache/</code> for all browsers, although +new browsers can also access it as +<code>http://www.apache.org/</code>.</p> + +<p>In order to make this work, put a link on your main server's page +to <code>http://www.apache.org/apache/</code> (Note: Do not use +<code>http://www.apache.org/</code> - this would create an endless +loop). Then, in the virtual host's pages, be sure to use either purely +relative links (e.g. "<code>file.html</code>" or +"<code>../icons/image.gif</code>" or links containing the prefacing +<code>/apache/</code> +(e.g. "<code>http://www.apache.org/apache/file.html</code>" or +"<code>/apache/docs/1.1/index.html</code>").</p> + +<p>This requires a bit of +discipline, but adherence to these guidelines will, for the most part, +ensure that your pages will work with all browsers, new and old. When +a new browser contacts <code>http://www.apache.org/</code>, they will +be directly taken to the Apache pages. Older browsers will be able to +click on the link from the main server, go to +<code>http://www.apache.org/apache/</code>, and then access the +pages.</p> + +<HR> +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.2 +</H3> + +<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A> + +</BODY> +</HTML> + diff --git a/usr.sbin/httpd/htdocs/manual/howto/auth.html b/usr.sbin/httpd/htdocs/manual/howto/auth.html index 6966d536a24..940d5ff7600 100644 --- a/usr.sbin/httpd/htdocs/manual/howto/auth.html +++ b/usr.sbin/httpd/htdocs/manual/howto/auth.html @@ -19,12 +19,12 @@ <h1 align="center">Authentication, Authorization, and Access Control</h1> - <a name="TOC"></a> + <a name="TOC"></a> <ul> <li><a href="#intro">Introduction</a></li> <li> - <a href="#basic">Basic authentication</a> + <a href="#basic">Basic authentication</a> <ul> <li><a href="#basicworks">How basic @@ -32,13 +32,13 @@ Control</h1> <li> <a href="#basicconfig">Configuration: - Protecting content with basic authentication</a> + Protecting content with basic authentication</a> </li> <li> <a href="#basicfaq">Frequently asked - questions about basic auth</a> + questions about basic auth</a> </li> <li><a href="#basiccaveat">Security @@ -48,7 +48,7 @@ Control</h1> </li> <li> - <a href="#digest">Digest authentication</a> + <a href="#digest">Digest authentication</a> <ul> <li><a href="#digestworks">How digest auth @@ -56,7 +56,7 @@ Control</h1> <li> <a href="#digestconfig">Configuration: - Protecting content with digest authentication</a> + Protecting content with digest authentication</a> </li> <li><a href="#digestcaveat">Caveats</a></li> @@ -66,7 +66,7 @@ Control</h1> <li> <a href="#database">Database authentication - modules</a> + modules</a> <ul> <li><a href="#modauthdb">mod_auth_db and @@ -78,14 +78,14 @@ Control</h1> <li> <a href="#authdbconfig">Protecting a - directory with mod_auth_db</a> + directory with mod_auth_db</a> </li> </ul> <br /> </li> <li> - <a href="#access">Access control</a> + <a href="#access">Access control</a> <ul> <li><a href="#allowdeny">Allow and Deny</a></li> @@ -191,8 +191,8 @@ Control</h1> <p>Along with the <tt>401</tt> response, certain other information will be passed back to the client. In particular, it sends a name which is associated with the protected area of - the web site. This is called the <i>realm</i><a id="11257" - name="11257"></a>, or just the authentication name. The client + the web site. This is called the <i>realm</i>, or just the + authentication name. The client browser caches the username and password that you supplied, and stores it along with the authentication realm, so that if other resources are requested from the same realm, the same username @@ -630,7 +630,7 @@ Require group authors Additional information and resources about MD5 can be found at <tt>http://userpages.umbc.edu/ mabzug1/cs/md5/md5.html</tt></p> - <h2><a name="digestconfig"></a>Configuration: + <h2><a name="digestconfig"></a>Configuration: Protecting content with digest authentication</h2> <p>The steps for configuring your server for digest @@ -724,7 +724,7 @@ htdigest -c /usr/local/apache/passwd/digest realm username </tr> </table> - <p>These directives may be places in a <tt>.htaccess</tt> file + <p>These directives may be placed in a <tt>.htaccess</tt> file in the particular directory being protected, or may go in the main server configuration file, in a <tt><Directory></tt> section, or another scope container.</p> @@ -792,8 +792,9 @@ Require group admins not use it on a web site on which you cannot control the browsers that people will be using, such as on your intranet site. In particular, Opera 4.0 or later, Microsoft Internet - Explorer 5.0 or later, and Amaya support digest authentication, - while Netscape, Mozilla, and various other browsers do not.</p> + Explorer 5.0 or later, Mozilla 1.0.1 and Netscape 7 or later + as well as Amaya support digest authentication, while various + other browsers do not.</p> <p>Next, with regard to security considerations, you should understand two things. Although your password is not passed in @@ -864,8 +865,7 @@ Require group admins pick whichever of the two modules makes the most sense on your particular platform of choice. If you do not have DB support on your platform, you may need to install it. You download an - implementation of DB at <tt>http://www.sleepycat.com/</tt>. <a - id="11415" name="11415"></a></p> + implementation of DB at <tt>http://www.sleepycat.com/</tt>. <h2><a name="dbfiles"></a>Berkeley DB files</h2> @@ -876,12 +876,11 @@ Require group admins name of a variable, and the value of that variable. While other databases allow the storage of many fields in a given record, a DB file allows only this pairing of key and value.<a - name="foot1_return" href="#foot1"><sup>21.1</sup></a> This is ideal for + name="foot1_return" href="#foot1"><sup>1</sup></a> This is ideal for authentication, which requires only the pair of a username and password.</p> <h2><a name="installauthdb">Installing mod_auth_db</a></h2> - <tt>mod_auth_db!installing</tt> <p>For the purposes of this tutorial, we'll talk about installing and configuring <tt>mod_auth_db</tt>. However, @@ -932,7 +931,7 @@ Require group admins <p>The user file for authentication is, this time, not a flat text file, but is a DB file<a name="foot2_return" - href="#foot2"><sup>21.2</sup></a>. Fortunately, once again, + href="#foot2"><sup>2</sup></a>. Fortunately, once again, Apache provides us with a simple utility for the purpose of managing this user file. This time, the utility is called <tt>dbmmanage</tt>, and will be located in the <tt>bin</tt> @@ -943,7 +942,7 @@ Require group admins simple. The syntax which you will usually be using is as follows:</p> <pre> -dbmmanage passwords.db adduser montressor +dbmmanage passwords.dat adduser montressor </pre> <p>As with <tt>htpasswd</tt>, you will at this point be @@ -975,7 +974,7 @@ tie %database, 'DB_File', "passwords.dat" $username = 'rbowen'; $password = 'mypassword'; @chars=(0..9,'a'..'z'); -$salt = '', map { $chars[int rand @chars] } (0..1); +$salt = $chars[int rand @chars] . $chars[int rand @chars]; $crypt = crypt($password, $salt); $database{$username} = $crypt; @@ -996,7 +995,7 @@ untie %database; when the data structure is changed, the file is automatically modified at the same time.</p> - <h3><a name="authdbuserfile"></a>Configuration Apache + <h3><a name="authdbuserfile"></a>Configuring Apache to use this password file</h3> <p>Once you have created the password file, you need to tell @@ -1090,15 +1089,15 @@ allow from address <p>For example, if you have someone spamming your message board, and you want to keep them out, you could do the - following: <a id="11494" name="11494"></a></p> + following:</p> <pre> deny from 11.22.33.44 </pre> <p>Visitors coming from that address will not be able to see the content behind this directive. If, instead, you have a - machine name, rather than an IP address, you can use that. <a - id="11497" name="11497"></a></p> + machine name, rather than an IP address, you can use that. + </p> <pre> deny from hostname.example.com </pre> @@ -1152,6 +1151,7 @@ Allow from hostname.example.com AuthUserFile /www/passwd/users AuthGroupFile /www/passwd/groups Require group customers + Order allow,deny Allow from internal.com Satisfy any </Directory> @@ -1178,7 +1178,7 @@ Allow from hostname.example.com <dl> <dt><a name="foot1">... value.</a><a - href="#foot1_return"><sup>21.1</sup></a></dt> + href="#foot1_return"><sup>1</sup></a></dt> <dd>There are actually a number of implementations that get around this limitation. MLDBM is one of them, for example. @@ -1187,7 +1187,7 @@ Allow from hostname.example.com with whatever operating system you are already running.</dd> <dt><a name="foot2">... file</a><a - href="#foot2_return"><sup>21.2</sup></a></dt> + href="#foot2_return"><sup>2</sup></a></dt> <dd>Or, if you are using mod_auth_dbm, a DBM file.</dd> </dl> @@ -1195,4 +1195,3 @@ Allow from hostname.example.com </body> </html> - diff --git a/usr.sbin/httpd/htdocs/manual/howto/ssi.html.en b/usr.sbin/httpd/htdocs/manual/howto/ssi.html.en index b737b85204b..046386cf77e 100644 --- a/usr.sbin/httpd/htdocs/manual/howto/ssi.html.en +++ b/usr.sbin/httpd/htdocs/manual/howto/ssi.html.en @@ -107,16 +107,11 @@ <a href="../mod/mod_mime.html#addhandler">AddHandler</a><br /> <a - href="../mod/mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a><br /> + href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a><br /> </td> </tr> </table> - <p>This HOWTO first appeared in Apache Today - (http://www.apachetoday.com/) as a series of three articles. - They appear here by arrangement with ApacheToday and - Internet.com.</p> - <p>This article deals with Server Side Includes, usually called simply SSI. In this article, I'll talk about configuring your server to permit SSI, and introduce some basic SSI techniques @@ -149,7 +144,9 @@ name="configuringyourservertopermitssi">Configuring your server to permit SSI</a></h2> - <p>To permit SSI on your server, you must have the following + <p>To permit SSI on your server, you must have <a + href="../mod/mod_include.html">mod_include</a> installed and + enabled. Additionally, you must have the following directive either in your <code>httpd.conf</code> file, or in a <code>.htaccess</code> file:</p> <pre> diff --git a/usr.sbin/httpd/htdocs/manual/howto/ssi.html.html b/usr.sbin/httpd/htdocs/manual/howto/ssi.html.html index d19836831a0..2da0dab0dfe 100644 --- a/usr.sbin/httpd/htdocs/manual/howto/ssi.html.html +++ b/usr.sbin/httpd/htdocs/manual/howto/ssi.html.html @@ -109,16 +109,11 @@ <a href="../mod/mod_mime.html#addhandler">AddHandler</a><br /> <a - href="../mod/mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a><br /> + href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a><br /> </td> </tr> </table> - <p>This HOWTO first appeared in Apache Today - (http://www.apachetoday.com/) as a series of three articles. - They appear here by arrangement with ApacheToday and - Internet.com.</p> - <p>This article deals with Server Side Includes, usually called simply SSI. In this article, I'll talk about configuring your server to permit SSI, and introduce some basic SSI techniques @@ -151,7 +146,9 @@ name="configuringyourservertopermitssi">Configuring your server to permit SSI</a></h2> - <p>To permit SSI on your server, you must have the following + <p>To permit SSI on your server, you must have <a + href="../mod/mod_include.html">mod_include</a> installed and + enabled. Additionally, you must have the following directive either in your <code>httpd.conf</code> file, or in a <code>.htaccess</code> file:</p> <pre> diff --git a/usr.sbin/httpd/htdocs/manual/howto/ssi.html.ja.jis b/usr.sbin/httpd/htdocs/manual/howto/ssi.html.ja.jis index f911aaab916..536257637c9 100644 --- a/usr.sbin/httpd/htdocs/manual/howto/ssi.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/howto/ssi.html.ja.jis @@ -106,7 +106,7 @@ <a href="../mod/mod_mime.html#addtype">AddType</a><br /> <a href="../mod/mod_mime.html#addhandler">AddHandler</a><br /> - <a href="../mod/mod_setenvif.html#BrowserBatchBoCase" + <a href="../mod/mod_setenvif.html#browsermatchnocase" >BrowserMatchNoCase</a><br /> </td> </tr> diff --git a/usr.sbin/httpd/htdocs/manual/install-tpf.html b/usr.sbin/httpd/htdocs/manual/install-tpf.html index 144bff8c04d..06ee1972305 100644 --- a/usr.sbin/httpd/htdocs/manual/install-tpf.html +++ b/usr.sbin/httpd/htdocs/manual/install-tpf.html @@ -18,10 +18,10 @@ <hr /> <center> - [ <a href="#download">Download</a> | <a - href="#compilation">Compilation</a> | <a - href="#installation">Installation</a> | <a - href="#visualage">VisualAge</a> ] + [ <a href="#download">Download</a> + | <a href="#compilation">Compilation</a> + | <a href="#installation">Installation</a> + | <a href="#visualage">VisualAge</a> ] </center> <hr /> @@ -50,7 +50,7 @@ <li>Download the compressed Apache files (the "tarball") to your PC. The file name on the web site will be something like <tt>apache_1.3.<i>xx</i>.tar.Z</tt>.<br /> - <font color="#FF0000"><font size="+1">TIP:</font></font> Be + <font color="#cc6600"><font size="+1">TIP:</font></font> Be sure to keep the <tt>.tar.Z</tt> extension when choosing the name of the PC file. <br /> </li> @@ -58,7 +58,7 @@ <li> Decompress the tarball on your PC using WinZip or some other PC decompression tool.<br /> - <font color="#FF0000"><font size="+1">TIP:</font></font> + <font color="#cc6600"><font size="+1">TIP:</font></font> If you are using WinZip verify that the <i>"TAR File Smart CR/LF Conversion"</i> option (under Options, Configuration) is NOT checked.<br /> @@ -100,7 +100,7 @@ <li>exit FTP: <b><tt>bye</tt></b> </li> </ul> - <p><font color="#FF0000"><font size="+1">TIP:</font></font> + <p><font color="#cc6600"><font size="+1">TIP:</font></font> UNIX file names are case sensitive. If you use an NFS client to transfer files from your PC to OS/390 UNIX (instead of using FTP as described above) verify that the @@ -145,7 +145,7 @@ modify src/os/tpf/TPFExport and src/Configure to match your environment.<br /> <br /> - <font color="#FF0000"><font size="+1">TIP:</font></font> + <font color="#cc6600"><font size="+1">TIP:</font></font> Editing files on your PC prior to moving them to OS/390 UNIX may result in the loss/addition of unprintable characters. Files of concern include shell scripts and src/Configuration. @@ -287,6 +287,31 @@ shutdown of Apache.</p> </li> + + <li><a id="syslog" name="syslog"></a> + Indicate if you have the Syslog Daemon message logging facility. + + <p>If you are on a PUT13 or higher system, or have PJ27214 installed, + you can use syslog for Apache's ErrorLog.<br /> + To have the option of using syslog you must do <em>one</em> of the following:<br /> + </p> + + <ul> + <li>add "<tt>#define HAVE_SYSLOG</tt>" to + <tt>src/os/tpf/os.h</tt> <em>or</em></li> + + <li>add "<tt>-DHAVE_SYSLOG</tt>" to the + <tt>_C89_OPTIONS</tt> export in src/os/tpf/TPFExport</li> + + </ul> + <br /> + + <p>You also need to add "<tt>INCLUDE OBJLIB(CSYLOG40)</tt>" to your link JCL.</p> + <p>See <em>TPF Transmission Control Protocol/Internet Protocol</em> for more information + about the Syslog Daemon: + <a href="http://www.ibm.com/tpf/pubs/tpfpubs.htm">http://www.ibm.com/tpf/pubs/tpfpubs.htm</a>.</p> + </li> + <li> Indicate if you would like to use the TCP/IP network services database. (This only applies if you are using TCP/IP native stack.) @@ -315,7 +340,7 @@ Set the TPF environment variables: <b><tt>. os/tpf/TPFExport</tt></b> <br /> <br /> - <font color="#FF0000"><font size="+1">TIP:</font></font> The + <font color="#cc6600"><font size="+1">TIP:</font></font> The initial period and blank on the command are required to ensure the environment variables exist beyond the scope of the shell script.<br /> @@ -393,6 +418,18 @@ </li> <li> + Edit include/ap_config.h if you want to use the <tt>sigaction()</tt> function.<br /> + + <p>The <tt>sigaction()</tt> function supersedes the <tt>signal()</tt> interface and should be used in preference. + This function was implemented with APAR PJ26188 which shipped with PUT10.</p> + + <p>To use <tt>sigaction()</tt> remove <tt>#define NO_USE_SIGACTION</tt> in the TPF section of ap_config.h.</p> + + <p>The change will only take effect after Apache is (re)compiled.</p> + + </li> + + <li> Edit include/ap_config.h if you do <em>not</em> want the scoreboard kept in shared memory.<br /> @@ -402,22 +439,16 @@ maintaining the scoreboard (which holds current Apache children status). The default behavior for Apache on TPF is to use shared memory. This reduces file activity for the - parent Apache ECB and improves performance. If you are on a - pre-PUT10 system you must change ap_config.h to use either - system heap or the file system.</p> - To use system heap for the scoreboard replace - <tt>#define USE_SHMGET_SCOREBOARD</tt> with - <tt>#define USE_TPF_SCOREBOARD</tt> in the TPF section - of ap_config.h.<br /> - <br /> - If you prefer instead to use the file system, remove both - <tt>#define USE_SHMGET_SCOREBOARD</tt> and - <tt>#define USE_TPF_SCOREBOARD</tt> from the TPF - section of ap_config.h<br /> - <br /> - The change will only take effect after Apache is - (re)compiled.<br /> - + parent Apache ECB and improves performance.</p> + + <p>If you are on a pre-PUT10 system, or for some reason + you do not want to use shared memory for the scoreboard, + you must remove "<tt>#define USE_SHMGET_SCOREBOARD</tt>" from the TPF + section of ap_config.h</p> + + <p>The change will only take effect after Apache is + (re)compiled.</p> + </li> <li> @@ -431,22 +462,26 @@ <ul> <li> - The following compilation warning is expected and can - be ignored:<br /> + The following two compilation warnings may or may not occur. + They should be ignored:<br /> <br /> - - util_uri.c: <tt>Function argument assignment between types "unsigned char*" and "const unsigned char*" is not allowed.</tt> <br /> <br /> + main/http_main.c: + <tt>Infinite loop detected in function child_main. + Program may not stop.</tt> + <br /> + <br /> + </li> <li>If during compilation you get a warning about a missing 'regex.h', set <tt>WANTHSREGEX=yes</tt> in the src/Configuration file and start back at the <a - href="#configure"><tt><b>Configure</b></tt></a> + href="#run-configure"><tt><b>Configure</b></tt></a> step.<br /> </li> @@ -480,20 +515,25 @@ src/Configuration file. </li> </ul> <br /> - <font color="#FF0000"><font size="+1">TIP:</font></font> + <font color="#cc6600"><font size="+1">TIP:</font></font> Do NOT include gen_test_char.o or gen_uri_delims.o in the link JCL since these files are only used during the <tt>make</tt> step. <br /><br /> - If you receive an "Unresolved references" error for "<tt>XML_ErrorString</tt>" you probably need to <a href="#delete-expat">remove the expat-lite directory</a> and start back at the "<a href="#run-configure">Run the Configure script" step</a><br /><br /> - If you receive an "unable to open" error for <tt>lib/expat-lite/hashtable.o</tt>" you probably need to remove all of the expat-lite .o's from your link JCL<br /> - + <br /> + + <font color="#cc6600"><font size="+1">TIP:</font></font> + Apache uses cinet6, which is part of the Internet Daemon (ZINET). + Ensure that you link Apache with the proper version of cinet6 for your system. + If you apply changes to cinet6 you should re-link Apache to prevent the + <code>inetd_getServer</code> and/or <code>inetd_getServerStatus</code> functions + from failing.<br /><br /> </li> @@ -503,6 +543,10 @@ <br /> A JCL condition code of 4 is expected since the C load module will contain no link map data.<br /> + + If you require a link map refer to the + <a href="#visualage">instructions below</a> on + creating one with VisualAge TPF.<br /> </li> <li>Load (<tt>ZOLDR LOAD</tt>) and activate (<tt>ZOLDR @@ -601,7 +645,7 @@ instead: <tt><b>ZINET ADD S-APACHE PGM-<em>chta</em> MODEL-NOLISTEN</b></tt></li> </ul> <br /> - <font color="red" size="4">TIP:</font> Logic changes + <font color="#cc6600" size="4">TIP:</font> Logic changes implemented with PUT11 cause ZINET to <i>not</i> restart NOLISTEN servers after <tt>ZOLDR ACT</tt> and <tt>ZOLDR DEACT</tt> entries. This means that Apache @@ -626,44 +670,40 @@ <tt><b>http://<i>xx.xx.xx.xx</i></b></tt> (where <i>xx.xx.xx.xx</i> is your IP address)</li> + </ol> <a id="visualage" name="visualage"></a> <center> - <h2>Compiling with VisualAge TPF</h2> + <h2>Using VisualAge TPF</h2> </center> - It is not required that <tt>make</tt> be used to compile Apache - for TPF: Individual programs may be compiled using IBM's - VisualAge TPF product. This is particularly useful when - compiling selected programs for the Debug Tool. - - <p>The following VisualAge compile settings are required:</p> - - <ul> - <li><i>"DEFINE - Define preprocessor macro name(s)"</i> must - include <b><tt>TPF, CHARSET_EBCDIC, _POSIX_SOURCE,</tt></b> - and <b><tt>USE_HSREGEX</tt></b> - </li> - - <li><i>"LSEARCH - Path for user include files"</i> must - include <b><tt>../src/include</tt></b> and - <b><tt>../src/os/tpf</tt></b> - </li> - - <li><i>"DLL - Generate DLL code"</i> must be checked - </li> - - <li><i>"LONGNAME - Support long names"</i> must be checked - </li> - </ul> + VisualAge TPF can be used to generate link maps for Apache: + <ol> + <li>Copy the sample <tt>linkhttp.dlm</tt> file from the <tt>src/os/tpf/samples</tt> + directory to your Apache <tt>src</tt> directory on OS/390 UNIX. + </li> + <li>This sample file contains the components for the default + configuration of Apache. Add and delete components (such as modules) + as necessary so it matches your configuration of Apache. + Basically, it should match your link JCL with the "<tt>.../apache/src</tt>" + portion of the filenames removed. + </li> + <li>Change items in angle brackets (< >) to also match your JCL. + Be sure to remove the angle brackets as well. + </li> + <li>In VisualAge TPF create a container with your modified dlm file as its sole contents. + </li> + <li>Right click on the dlm file in your new container and choose "Build DLM". + </li> + </ol> <hr /> <center> - [ <a href="#top">top</a> | <a - href="#download">Download</a> | <a - href="#compilation">Compilation</a> | <a - href="#installation">Installation</a> | <a - href="#visualage">VisualAge</a> ] + [ <a href="#top">top</a> + | <a href="#download">Download</a> + | <a href="#compilation">Compilation</a> + | <a href="#installation">Installation</a> + | <a href="#visualage">VisualAge</a> ] </center> </body> </html> diff --git a/usr.sbin/httpd/htdocs/manual/install.html.en b/usr.sbin/httpd/htdocs/manual/install.html.en index 455a125fc04..207d64ca5c5 100644 --- a/usr.sbin/httpd/htdocs/manual/install.html.en +++ b/usr.sbin/httpd/htdocs/manual/install.html.en @@ -191,7 +191,7 @@ please read the document htdocs/manual/dso.html carefully. Especially the section entitled "Advantages & Disadvantages" because using the DSO mechanism can have strange side-effects if you are not - carefully. BE WARNED!</p> + careful. BE WARNED!</p> </dd> </dl> @@ -258,10 +258,10 @@ <h3><a name="trad_configure">Configuring the installation</a></h3> - Compiling Apache consists of three steps: Firstly select which + Compiling Apache consists of three steps: First select which Apache <strong>modules</strong> you want to include into the - server. Secondly create a configuration for your operating - system. Thirdly compile the executable. + server. Second create a configuration for your operating + system. Third compile the executable. <p>All configuration of Apache is performed in the <code>src</code> directory of the Apache distribution. Change @@ -269,8 +269,8 @@ <ol> <li> - Select modules to compile into Apache in the - <code>Configuration</code> file. Uncomment lines + Select modules to compile into Apache in the <code>Configuration</code> + file <code>src/Configuration.tmpl</code>. Uncomment lines corresponding to those optional modules you wish to include (among the AddModule lines at the bottom of the file), or add new lines corresponding to additional modules you have diff --git a/usr.sbin/httpd/htdocs/manual/install.html.es b/usr.sbin/httpd/htdocs/manual/install.html.es index 693010262a3..2476dff6296 100644 --- a/usr.sbin/httpd/htdocs/manual/install.html.es +++ b/usr.sbin/httpd/htdocs/manual/install.html.es @@ -63,7 +63,7 @@ en la web y por ftp anónimo.</p> <p>Si se ha bajado la distribución binaria, vaya a <a - href="#install">Instalación de Apache</a>. Si no es + href="#installing">Instalación de Apache</a>. Si no es así lea la siguiente sección como compilar el servidor.</p> @@ -160,7 +160,7 @@ Hay instrucciones en esa página para añadir estos módulos en el núcleo de Apache.</p> - <h2><a id="install" name="install">Instalación de + <h2><a id="installing" name="installing">Instalación de Apache</a></h2> <p>Tendrá un fichero binario llamado <code>hhtpd</code> diff --git a/usr.sbin/httpd/htdocs/manual/install.html.fr b/usr.sbin/httpd/htdocs/manual/install.html.fr index d5d197c2185..e6b600aa509 100644 --- a/usr.sbin/httpd/htdocs/manual/install.html.fr +++ b/usr.sbin/httpd/htdocs/manual/install.html.fr @@ -63,7 +63,7 @@ <p>Si vous avez téléchargé une distribution composée des binaires, passez directement - à l'<a href="#install">installation d'Apache</a>. Sinon + à l'<a href="#installing">installation d'Apache</a>. Sinon lisez la section suivante afin de savoir comment compiler le serveur.</p> @@ -168,7 +168,7 @@ make Des instructions sont fournies sur cette page pour lier ces modules au noyau d'Apache. - <h2><a id="install" name="install">Installation + <h2><a id="installing" name="installing">Installation d'Apache</a></h2> Vous devez avoir un exécutable appelé <code>httpd</code> dans le répertoire <code>src</code>. diff --git a/usr.sbin/httpd/htdocs/manual/install.html.html b/usr.sbin/httpd/htdocs/manual/install.html.html index 1364cb6e51d..3352a08fbed 100644 --- a/usr.sbin/httpd/htdocs/manual/install.html.html +++ b/usr.sbin/httpd/htdocs/manual/install.html.html @@ -193,7 +193,7 @@ please read the document htdocs/manual/dso.html carefully. Especially the section entitled "Advantages & Disadvantages" because using the DSO mechanism can have strange side-effects if you are not - carefully. BE WARNED!</p> + careful. BE WARNED!</p> </dd> </dl> @@ -260,10 +260,10 @@ <h3><a name="trad_configure">Configuring the installation</a></h3> - Compiling Apache consists of three steps: Firstly select which + Compiling Apache consists of three steps: First select which Apache <strong>modules</strong> you want to include into the - server. Secondly create a configuration for your operating - system. Thirdly compile the executable. + server. Second create a configuration for your operating + system. Third compile the executable. <p>All configuration of Apache is performed in the <code>src</code> directory of the Apache distribution. Change @@ -271,8 +271,8 @@ <ol> <li> - Select modules to compile into Apache in the - <code>Configuration</code> file. Uncomment lines + Select modules to compile into Apache in the <code>Configuration</code> + file <code>src/Configuration.tmpl</code>. Uncomment lines corresponding to those optional modules you wish to include (among the AddModule lines at the bottom of the file), or add new lines corresponding to additional modules you have diff --git a/usr.sbin/httpd/htdocs/manual/install.html.ja.jis b/usr.sbin/httpd/htdocs/manual/install.html.ja.jis index 83f48a28676..70eff7bbd66 100644 --- a/usr.sbin/httpd/htdocs/manual/install.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/install.html.ja.jis @@ -1,17 +1,16 @@ <?xml version="1.0" encoding="iso-2022-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> - <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> - <title>Compiling and Installing Apache</title> + </head> - <!-- English revision: 1.34 --> + <!-- English revision: 1.39 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> - <body bgcolor="#ffffff" text="#000000" link="#0000ff" - vlink="#000080" alink="#ff0000"> + <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" + alink="#ff0000"> <div align="CENTER"> <img src="images/sub.gif" alt="[APACHE DOCUMENTATION]" /> @@ -22,48 +21,251 @@ <h1 align="center">Apache 1.3 $B$N%3%s%Q%$%k!&%$%s%9%H!<%k(B</h1> - <p>$B$3$N%I%-%e%a%s%H$O(B Apache $B$r(B Unix $B%7%9%F%`>e$G!"<jF0$G$N%S%k%I(B - $B!&%$%s%9%H!<%k$N<jK!$K$h$C$F!"%3%s%Q%$%k!"%$%s%9%H!<%k(B - $B$9$k$?$a$N$b$N$G$9!#$b$7!"$"$J$?$,(B autoconf $B%9%?%$%k$N(B configure - $B%$%s%?!<%U%'%$%9$r;H$$$?$$>l9g$O!"(BApache $B$N%=!<%9G[I[$N%k!<%H$K$"$k(B - INSTALL $B%U%!%$%k$rBe$o$j$KFI$s$G$/$@$5$$!#FCDj$N%W%i%C%H%U%)!<%`>e$G$N(B - $B%3%s%Q%$%k$H%$%s%9%H!<%k$K$D$$$F$O!"0J2<$N9`L\$r;2>H$7$F$/$@$5$$!#(B</p> + <ul> + <li><a href="#download">Apache $B$N%@%&%s%m!<%I(B</a></li> + <li><a href="#intro">$BF3F~(B</a></li> + <li><a href="#apaci">APACI $B$r;H$C$?(B Apache 1.3 HTTP $B%5!<%P$N%$%s%9%H!<%k(B</a></li> + <ul> + <li><a href="#requirements">$BI,MW$J%7%9%F%`(B</a></li> + <li><a href="#configure">$B%=!<%9%D%j!<$N@_Dj(B</a></li> + <li><a href="#build">$B%Q%C%1!<%8$N%S%k%I(B</a></li> + <li><a href="#installing">$B%Q%C%1!<%8$N%$%s%9%H!<%k(B</a></li> + </ul> + <li><a href="#traditional">$BEAE}E*$JJ}K!$K$h$k%S%k%I$H%$%s%9%H!<%k(B</a></li> + <ul> + <li><a href="#trad_configure">$B%$%s%9%H!<%k$N@_Dj(B</a></li> + <li><a href="#trad_compile">Apache $B$N%3%s%Q%$%k(B</a></li> + <li><a href="#trad_install">Apache $B$N%$%s%9%H!<%k(B</a></li> + </ul> + <li><a href="#testing">$B%Q%C%1!<%8$N%F%9%H(B</a></li> + <li><a href="#time">$B@5$7$$%7%9%F%`;~4V$N@_Dj(B</a></li> + </ul> + <p>$B$3$NJ8=q$O(B Apache $B$r(B Unix $B%7%9%F%`>e$G!"%3%s%Q%$%k5Z$S%$%s%9%H!<%k(B + $B$9$k$?$a$N$b$N$G$9!#$=$l0J30$N%W%i%C%H%[!<%`>e$G$N%3%s%Q%$%k5Z$S(B + $B%$%s%9%H!<%k$K$D$$$F$O!"0J2<$N9`L\$r;2>H$7$F$/$@$5$$!#(B</p> <ul> - <li><a href="windows.html">Microsoft Windows $B>e$G(B Apache - $B$r;HMQ$9$k(B</a></li> + <li><a href="windows.html">Microsoft Windows $B>e$G$N(B Apache$B$N;HMQ(B</a></li> + <li><a href="cygwin.html">Cygwin $B>e$G$N(B Apache $B$N;HMQ(B</a></li> + <li><a href="netware.html">Novell Netware $B>e$G$N(B Apache $B$N;HMQ(B</a></li> + <li><a href="mpeix.html">HP MPE/iX $B>e$G$N(B Apache $B$N;HMQ(B</a></li> + <li><a href="unixware.html">UnixWare $B>e$G$N(B Apache $B$N%3%s%Q%$%k(B</a></li> + <li><a href="readme-tpf.html">Apache $B$N(B TPF Port $B$N35MW(B</a> + </li> + </ul> - <li><a href="cygwin.html">Cygwin $B>e$G(B Apache $B$r;HMQ$9$k(B</a></li> + <h2><a id="download" name="download">Apache $B$N%@%&%s%m!<%I(B</a></h2> + + <p>Apache $B$N:G?7HG$O(B Apache $B%&%'%V%5%$%H(B <a + href="http://www.apache.org/dist/httpd/">http://www.apache.org/dist/httpd/</a> + $B$^$?$O(B <a href="http://www.apache.org/dyn/closer.cgi" + >http://www.apache.org/dyn/closer.cgi</a> + $B$K%j%9%H$5$l$?B?$/$N%_%i!<%5%$%H$+$iD>@\%@%&%s%m!<%I$9$k$3$H$b=PMh$^$9!#(B + $B$3$l$i$N%5%$%H$K$O8=:_$N%j%j!<%9HG$d:G?7$N%Y!<%?HG!"8E$$%P!<%8%g%s$X$N%j%s%/!"(B + $B$$$m$$$m$J%W%i%C%H%[!<%`MQ$N%P%$%J%jG[I[$,%j%9%H$5$l$^$9!#(B</p> + + <h2><a id="intro" name="intro">$BF3F~(B</a></h2> + + <p>$B$9$Y$F$NNI$$J*$HF1MM!"(BApache $B$r@_Dj!"%3%s%Q%$%k!"%$%s%9%H!<%k(B + $B$9$kJ}K!$OFs$D$"$j$^$9!#0J2<$G@bL@$9$k(B APACI $B%W%m%;%9$r;H$C$?(B + 3$BJ,%$%s%9%H!<%k!"$^$?$O(B 'src/INSTALL' $B%U%!%$%k$G@bL@$5$l$F$$$k!"(B + $B0JA0$N%P!<%8%g%s$N(B Apache $B$HF1$85!9=$rA*Br$9$k$3$H$,=PMh$^$9!#(B + $B$=$l$>$l$KMxE@$H7gE@$,$"$j$^$9!#(B- APACI $B$O$h$j?7$7$/!"(B + $B>/$7=O@.$5$l$F$$$^$;$s$,$=$l$KHq$d$9;~4V$O:G>.8B$G:Q$_$^$9!#(B + $BBP$7$F!"(B"Configuration.tmpl" + $B$N5!9=$r;H$C$?=>Mh$NJ}K!$O%Q%o!<%f!<%6$K$H$C$F$O$h$j=@Fp$K07$&$3$H$,=PMh$^$9!#(B + $B2f!9$O!"$=$l$>$l$N$d$jJ}$KBP$9$k0U8+$d%U%#!<%I%P%C%/$K$OBgJQ6=L#$,$"$j$^$9(B + </p> - <li><a href="netware.html">Novell Netware $B>e$G(B Apache - $B$r;HMQ$9$k(B</a></li> + <h2><a id="apaci" name="apaci">APACI $B$r;H$C$?(B Apache 1.3 HTTP + $B%5!<%P$N%$%s%9%H!<%k(B</a></h2> - <li><a href="mpeix.html">HP MPE/iX $B>e$G(B Apache $B$r;HMQ$9$k(B</a></li> + <h3>Overview for the impatient</h3> +<pre> + $ ./configure --prefix=PREFIX + $ make + $ make install + $ PREFIX/bin/apachectl start +</pre> - <li><a href="unixware.html">UnixWare $B>e$G(B Apache - $B$r%3%s%Q%$%k$9$k(B</a></li> + <p><b>$BCm0U(B:</b> <code>PREFIX</code> $B$O(B "PREFIX" + $B$H$$$&J8;zNs$G$O$"$j$^$;$s!#Be$o$j$K(B Apache $B$r%$%s%9%H!<%k$7$?$$(B + Unix $B$N%U%!%$%k%7%9%F%`>e$N%Q%9$r;H$$$^$9!#$?$H$($P>e$N(B PREFIX + $B$NItJ,$K$O(B "<code>/usr/local/apache</code>" $B$,F~$j$^$9!#(B</p> + + <h3><a id="requirements" name="requirements">$BI,MW$J%7%9%F%`(B</a></h3> + <p>Apache $B$N%S%k%I$K$O0J2<$K5s$2$k$b$N$,I,MW$K$J$j$^$9(B</p> + + <dl> + <dt><b>$B%G%#%9%/%9%Z!<%9(B</b></dt> + + <dd>$BLs(B 12 MB $B$N%G%#%9%/%9%Z!<%9$,0l;~E*$KI,MW$K$J$k$3$H$r3NG'$7$F$/$@$5$$!#(B + $B%$%s%9%H!<%k8e$K$OLs(B 3 MB $B$N%G%#%9%/%9%Z!<%9$,I,MW$K$J$j$^$9!#(B + ($B<B:]$KI,MW$K$J%G%#%9%/%9%Z!<%9$OAH$_9~$^$l$?%5!<%I%Q!<%F%#!<$N(B + $B%b%8%e!<%kEy$K0M$j$^$9(B)$B!#(B</dd> + + <dt><b>ANSI-C $B%3%s%Q%$%i(B</b></dt> + + <dd>ANSI-C $B%3%s%Q%$%i$,%$%s%9%H!<%k$5$l$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B + Free Software Foundation (FSF) $B$K$h$k(B GNU C $B%3%s%Q%$%i(B (GCC) + $B$r?d>)$7$^$9(B($B%P!<%8%g%s(B 2.7.2 $B$GBg>fIW(B)$B!#(BGCC $B$r;}$C$F$$$J$$>l9g$O(B + $B%Y%s%@$K$h$k%3%s%Q%$%i$,:GDc8B(B ANSI $B8_49$G$"$k$3$H$r3NG'$7$F$/$@$5$$!#(B + GNU $B$N%[!<%`%Z!<%8$O(B http://www.gnu.org/ $B$K!"(BGCC $BG[I[$O(B + http://www.gnu.org/order/ftp.html $B$+$i8+$D$1$k$3$H$,=PMh$^$9!#(B</dd> + + <dt><b>Perl 5 $B%$%s%?%W%j%?(B [$B%*%W%7%g%s(B]</b></dt> + + <dd>`apxs' $B$d(B `dbmmanage' $B$N$h$&$J(B(Perl $B$G=q$+$l$?(B) + $B%5%]!<%H%9%/%j%W%H$NCf$K$O(B Perl 5 $B%$%s%?%W%j%?(B ($B%P!<%8%g%s(B 5.003 + $B$^$?$O(B 5.004 $B$,K>$^$7$$(B) $B$,I,MW$J$b$N$,$"$j$^$9!#(BAPACI $B$N(B + `configure' $B%9%/%j%W%H$K$=$N$h$&$J%$%s%?%W%j%?$,8+$D$+$i$J$+$C$?>l9g!"(B + $B32$K$O$J$j$^$;$s!#EvA3!"(BApache 1.3 $B$r%S%k%I5Z$S%$%s%9%H!<%k(B + $B$9$k$3$H$,$G$-$^$9!#$b$7!"J#?t$N(B Perl $B%$%s%?%W%j%?$,%$%s%9%H!<%k(B + $B$5$l$F$$$k>l9g(B ($B62$i$/$O%Y%s%@$K$h$k(B Perl 4 $B$H<+J,$GF3F~$7$?(B Perl 5)$B!"(B + --with-perl $B%*%W%7%g%s(B ($B0J2<;2>H(B) $B$r;H$C$F@5$7$$$b$N$rA*Br$7(B APACI + $B$KCN$i$;$F$d$k$3$H$r?d>)$7$^$9!#(B</dd> + + <dt><b>$BF0E*6&M-%*%V%8%'%/%H(B (DSO) $B%5%]!<%H(B [$B%*%W%7%g%s(B]</b></dt> + + <dd> + <p>$B8=:_!":GBg8B$N=@Fp@-$N$?$a$K(B Apache $B$O(B dlopen()/dlsym() + $B%7%9%F%`%3!<%k$rMxMQ$7$?(B DSO $B5!9=$r7PM3$5$;$?%i%s%?%$%`$K$h$j!"(B + $B%b%8%e!<%k$r%m!<%I$9$k$3$H$,=PMh$^$9!#$3$l$i$N%7%9%F%`%3!<%k$O$9$Y$F$N(B + OS $B$GM-8z$J$o$1$G$O$J$$$N$G$I$N%W%i%C%H%[!<%`$G$b(B DSO + $B5!9=$r;H$($k$H$O8B$j$^$;$s!#%7%'%"!<%I%*%V%8%'%/%H$N%3%s%Q%$%k$O(B + $BHs>o$K%W%i%C%H%U%)!<%`$K0MB8$7$?$b$N$G$"$k$?$a!"(BApache $B$O8=;~E@$G$O(B + $B$$$/$D$+$N%W%i%C%H%U%)!<%`$K4X$7$F$N$_$=$NJ}K!$rCN$C$F$$$^$9!#(B + $B8=:_$N>u67$O$3$N$h$&$K$J$j$^$9!#(B</p> + + <ul> + <li> + $B%5%]!<%H$5$l$F$$$k%W%i%C%H%U%)!<%`(B: + + <p> + <table border="0"> + <tr> + <td>Linux</td> + <td>SunOS</td> + <td>UnixWare</td> + <td>Darwin/Mac OS</td> + </tr> + <tr> + <td>FreeBSD</td> + <td>Solaris</td> + <td>AIX</td> + <td>OpenStep/Mach</td> + </tr> + <tr> + <td>OpenBSD</td> + <td>IRIX</td> + <td>SCO</td> + <td>DYNIX/ptx</td> + </tr> + <tr> + <td>NetBSD</td> + <td>HPUX</td> + <td>ReliantUNIX</td> + <td>BSDI</td> + </tr> + <tr> + <td>Digital Unix</td> + <td>DGUX</td> + </tr> + </table> + </p> + </li> + + <li> + $B40A4$K%5%]!<%H30$N%W%i%C%H%U%)!<%`(B: + + <p>Ultrix</p> + </li> + </ul> + + <p>$B$"$J$?$N%7%9%F%`$,$3$N%j%9%H$K$J$$$1$l$I!"(Bdlopen + $B7A<0$N%$%s%?%U%'!<%9$,$"$k>l9g!"E,@Z$J%3%s%Q%$%i$H%j%s%+%U%i%0(B + (CFLAGS_SHLIB, LDFLAGS_SHLIB $B5Z$S(B LDFLAGS_SHLIB_EXPORT $B;2>H(B) + $B$r<jF0$GM?$($F$d$k$+!":GDc8B(B Apache $B$,%*%W%7%g%s$r?d;!$G$-$k$h$&$K!"(B + Perl 5 $B%$%s%?%W%j%?$,$I$3$K%$%s%9%H!<%k(B + $B$5$l$F$$$k$+$r;XDj$9$kI,MW$,$"$j$^$9!#(B</p> + + <p>Apache 1.3 $B$G$N(B DSO $B%5%]!<%H$K4X$9$k!"$h$j:YIt$N>pJs$K$D$$$F$O(B + htdocs/manual/dso.html $B$NJ8=q$r$h$/FI$s$G$/$@$5$$!#(B + $B==J,$KCm0U$7$J$$$G(B DSO $B5!9=$r;H$&$HL/$JI{:nMQ$,H/@8$9$k$3$H$,$"$k$?$a!"(B + $BFC$K(B + "Advantages & Disadvantages" $B$HL>IU$1$i$l$?@a$O(B + $BCm0U$7$FFI$s$G$/$@$5$$!#7Y9p$O$7$^$7$?$h(B!</p> + </dd> + </dl> + + <h3><a id="configure" name="configure">$B%=!<%9%D%j!<$N@_Dj(B</a></h3> + + <p>$B<!$NCJ3,$O(B Apache $B%=!<%9%D%j!<$rFCDj$N%W%i%C%H%[!<%`$d(B + $B8D!9$NI,MW$K9g$o$;$F@_Dj$7$^$9!#$3$N@_Dj$G:G$b=EMW$J$3$H$O8e$G(B + Apache $B$,%$%s%9%H!<%k$5$l$k0LCV$N7hDj$G$9!#$H$$$&$N$O(B + Apache $B$,@5$7$/F0:n$9$k$?$a$K$3$N0LCV$K9g$o$;$F@_Dj$5$l$k$+$i$G$9!#(B + $BB>$K$b4uK>$K1~$8$FB?$/$N%*%W%7%g%s$,M-8z$G$9!#(B</p> + + <p>$B$I$s$J$3$H$,=PMh$k$N$+4JC1$K46$8$F$b$i$&$?$a!"$3$3$G$O(B + $BI8=`E*$JNc$H$7$F!"%$%s%9%H!<%k%D%j!<$r(B /sw/pkg/apache, + $BFCDj$N%3%s%Q%$%i5Z$S%U%i%0!"$=$7$F(B 2 $B$D$NDI2C%b%8%e!<%k(B mod_rewrite + $B5Z$S(B mod_proxy $B$r8e$G(B DSO $B5!9=$K$h$j%m!<%I$5$;$k$h$&$K(B Apache + $B$r%3%s%Q%$%k$9$k$b$N$H$7$^$9(B>$B!#(B</p> +<pre> + $ CC="pgcc" OPTIM="-O2" \ + ./configure --prefix=/usr/local/apache \ + --enable-module=rewrite --enable-shared=rewrite \ + --enable-module=proxy --enable-shared=proxy +</pre> - <li><a href="readme-tpf.html">Apache $B$N(B TPF Port $B$N35MW(B</a> - </li> - </ul> + <p>$BM-8z$J%*%W%7%g%s$N40A4$J%j%9%H$O0J2<$N%3%^%s%I$rBG$A9~$s$G$/$@$5$$!#(B + </p> + <p><code>./configure --help</code></p> + + <p>$B@_DjNc$N%j%9%H$O(B <code>README.configure</code> + $B%U%!%$%k$b8+$F$/$@$5$$!#(B</p> + + <h3><a id="build" name="build">$B%Q%C%1!<%8$N%S%k%I(B</a></h3> + + <p>$B$3$l$G(B Apache $B%Q%C%1!<%8$N3FItJ,$r%3%^%s%I(B</p> +<pre> + $ make +</pre> + + <p>$B$r<B9T$9$k$3$H$K$h$j%S%k%I$9$k$3$H$,=PMh$^$9!#(B + $B$3$l$K$OM-8z$K$7$?%b%8%e!<%k$NNL$K$b$h$j$^$9$,(B Pentium-166/FreeBSD-2.2 + $B%7%9%F%`$N>l9g$GLs(B 2 $BJ,$+$+$j$^$9!#$8$C$HBT$C$F$/$@$5$$!#(B + </p> + + <h3><a id="installing" name="installing">$B%Q%C%1!<%8$N%$%s%9%H!<%k(B</a></h3> - <h2>Apache $B$N%@%&%s%m!<%I(B</h2> - Apache $B$N:G?7HG$N>pJs$O(B <a href="http://www.apache.org/" - >http://www.apache.org/</a> $B$N(B Apache - $B%&%'%V%5!<%P$+$iF~<j$9$k$3$H$,$G$-$^$9!#$3$3$K$O:G?7%j%j!<%9$H!"(B - $B$h$j?7$7$$%Y!<%?%F%9%H%j%j!<%9!"%_%i!<%&%'%V%5%$%H$H(B anonymous ftp - $B%5%$%H$N>\$7$$>pJs$,I=<($5$l$F$$$^$9!#(B + <p>$B%$%s%9%H!<%k$N(B <code>PREFIX</code> ($B>e$N(B <code>--prefix</code> + $B%*%W%7%g%s;2>H(B)$B@_Dj$K$h$j%Q%C%1!<%8$r%$%s%9%H!<%k$9$k;~$G$9!#(B</p> +<pre> + $ make install +</pre> + + <p>$B0J2<$NNc$G$O(B <code>PREFIX</code> $B$O$=$N$^$^(B "PREFIX" + $B$G$O$J$/!"(B<code>--prefix</code> + $B%*%W%7%g%s$K$h$jM?$($i$l$?0z?t$K$J$j$^$9!#(B</p> + +<!-- Building and installing Apache in the traditional way --> + <h2><a id="traditional" name="traditional">$BEAE}E*$JJ}K!$K$h$k%S%k%I$H%$%s%9%H!<%k(B</a></h2> - <p>$B$b$7!"$"$J$?$,%P%$%J%jG[I[HG$r%@%&%s%m!<%I$7$?$N$G$"$l$P!"(B<a - href="#install">Apache $B$N%$%s%9%H!<%k(B</a>$B$K0\$C$F$/$@$5$$!#$=$&$G$J$1$l$P!"(B - $B<!$N%;%/%7%g%s$N%5!<%P$N%3%s%Q%$%k$K$D$$$F$rFI$s$G2<$5$$!#(B</p> + <p>APACI $B$,=P$F$/$k0JA0$O(B Apache $B$N%S%k%I5Z$S%$%s%9%H!<%k$NJ}K!$O(B + 1 $B$D$7$+$"$j$^$;$s$G$7$?!#(BAPACI $B$O(B + $B?M$K$h$C$F$O$h$j$o$+$j$d$9$$@_Dj$N%$%s%?!<%U%'!<%9$rDs6!$7$^$9$,!"(B + $B=>Mh$+$i$NJ}K!$OBgNL$N%3%^%s%I%i%$%s(B + $B%*%W%7%g%s$rBG$A9~$`$3$H$J$/%$%s%9%H!<%k$N@_Dj$r(B + $B=PMh$kJ}K!$,MQ0U$5$l$F$$$^$9!#(B</p> - <h2>Apache $B$N%3%s%Q%$%k(B</h2> - Apache $B$N%3%s%Q%$%k$O;0CJ3,$G9=@.$5$l$^$9(B: $B$^$:%5!<%P$K4^$a$?$$(B - Apache <strong>$B%b%8%e!<%k(B</strong> $B$rA*Br$7$F$/$@$5$$!#(B - $B<!$K!"$"$J$?$N(B OS $B$K9g$o$;$?@_Dj$r$7$^$9!#(B - $B:G8e$K%3%s%Q%$%k$r$7$^$9!#(B + <h3><a id="trad_configure" name="trad_configure">$B%$%s%9%H!<%k$N@_Dj(B</a></h3> + + <p>Apache $B$N%3%s%Q%$%k$O;0CJ3,$G9=@.$5$l$^$9!#(B + $B$^$:%5!<%P$K4^$a$?$$(B Apache <strong>$B%b%8%e!<%k(B</strong> + $B$rA*Br$7$F$/$@$5$$!#<!$K!"(BOS $B$K9g$o$;$?@_Dj$r$7$^$9!#(B + $B:G8e$K%3%s%Q%$%k$r$7$^$9!#(B</p> <p>Apache $B$NA4$F$N@_Dj$O!"(BApache $BG[I[$N(B <code>src</code> $B%G%#%l%/%H%j$G9T$o$l$^$9!#$3$N%G%#%l%/%H%j$KF~$C$F$/$@$5$$!#(B @@ -71,7 +273,8 @@ <ol> <li> - <code>Configuration</code> $B%U%!%$%k$NCf$G(B Apache + <code>Configuration</code> $B%U%!%$%k(B <code>src/Configuration.tmpl</code> + $B$NCf$G(B Apache $B$K%3%s%Q%$%k$9$k%b%8%e!<%k$rA*Br$7$^$9!#<BAu$7$?$$%*%W%7%g%s$N(B $B%b%8%e!<%k$N9T$N%3%a%s%H$r30$9$+(B ($B%U%!%$%k$N=*$o$j$K$"$k(B AddModule $B9T$G(B) $B!"%@%&%s%m!<%I$7$?$j!":n@.$7$?DI2C$N%b%8%e!<%k$N(B @@ -99,7 +302,7 @@ <code>EXTRA_CFLAGS, LIBS, LDFLAGS, INCLUDES</code>. - <p><code>Configure</code> $B%9%/%j%W%H$r<B9T$7$^$9(B:</p> + <p><code>Configure</code> $B%9%/%j%W%H$r<B9T$7$^$9(B</p> <blockquote> <pre> @@ -115,7 +318,7 @@ Creating Makefile in os/unix Creating Makefile in modules/standard - </pre> +</pre> </blockquote> (*: $B@_DjFbMF$H%7%9%F%`$K$h$C$F$O!"(BConfigure $B$O$3$NDL$j$K(B $BI=<($7$J$$$3$H$,$"$j$^$9$,!"$=$l$GLdBj$"$j$^$;$s!#(B) @@ -130,9 +333,11 @@ $B%U%!%$%k$rFI$_9~$`$h$&$K%*%W%7%g%s$rIU$1$k$H$$$$$G$7$g$&!#(B)</p> </li> + <h3><a id="trad_compile" name="trad_compile">Apache $B$N%3%s%Q%$%k(B</a></h3> + <li><code>make</code> $B$r<B9T$7$F$/$@$5$$!#(B</li> </ol> - Apache $BG[I[$K$"$k%b%8%e!<%k$O(BApache $B3+H/%0%k!<%W$K$h$C$F%F%9%H$,9T$o$l!"(B + Apache $BG[I[J*$K$"$k%b%8%e!<%k$O(B Apache $B3+H/%0%k!<%W$K$h$C$F%F%9%H$,9T$o$l!"(B $BB?$/$N%a%s%P!<$K$h$C$FF|>oE*$K;H$o$l$F$$$k$b$N$G$9!#(B $B%a%s%P!<$d%5!<%I%Q!<%F%#$K$h$C$F3+H/$5$l$?FCDj$N%K!<%:$d5!G=$r$b$D(B $BDI2C%b%8%e!<%k$O!"(B<<a @@ -141,7 +346,8 @@ $B$+$iF~<j$9$k$3$H$,$G$-$^$9!#$3$N%Z!<%8$K$O!"$3$l$i$N%b%8%e!<%k$r(B Apache $B%3%"%3!<%I$K%j%s%/$5$;$k$?$a$N@bL@$,=q$$$F$"$j$^$9!#(B - <h2><a id="install" name="install">Apache $B$N%$%s%9%H!<%k(B</a></h2> + <h3><a id="trad_install" name="trad_install">Apache $B$N%$%s%9%H!<%k(B</a></h3> + $B%3%s%Q%$%k$r9T$&$H!"(B<code>httpd</code> $B$H$$$&%P%$%J%j%U%!%$%k$,(B <code>src</code> $B%G%#%l%/%H%j$K:n@.$5$l$^$9!#(BApache $B$N%P%$%J%jG[I[$O$3$N%U%!%$%k$rDs6!$7$^$9!#(B @@ -150,7 +356,7 @@ Apache $B$O%3%s%Q%$%k$5$l$?%G%#%l%/%H%j$HF1$8%G%#%l%/%H%j$N%;%C%H$G(B $B@_Dj!"<B9T$5$l$k$h$&$K$J$C$F$$$^$9!#(B $B$b$7$I$3$+B>$N$H$3$m$+$i<B9T$5$;$?$$>l9g$O!"%G%#%l%/%H%j$r:n@.$7!"(B - $B$=$3$K(B <code>conf</code> $B$H(B <code>logs</code>, <code>icons</code> + $B$=$3$K(B <code>conf</code>, <code>logs</code> $B5Z$S(B <code>icons</code> $B%G%#%l%/%H%j$r%3%T!<$7$F$/$@$5$$!#$I$A$i$N>l9g$G$b!"(B $B%5!<%P%k!<%H$N%G%#%l%/%H%j$N%Q!<%_%C%7%g%s$r$I$&@_Dj$9$k$+$K$D$$$F!"(B <a href="misc/security_tips.html#serverroot">security $B>pJs(B</a> @@ -171,8 +377,7 @@ $B%;%-%e%j%F%#E*$K4m81$K$J$C$?$j$7$^$9!#(B <code>conf</code> $B%G%#%l%/%H%j$K$O(B <code>mime.types</code> $B$H$$$&DI2C%U%!%$%k$,$"$j$^$9!#(B - $BDL>o$3$N%U%!%$%k$rJT=8$9$kI,MW$O$"$j$^$;$s!#(B - </p> + $BDL>o$3$N%U%!%$%k$rJT=8$9$kI,MW$O$"$j$^$;$s!#(B</p> <p>$B:G=i$K(B <code>httpd.conf</code> $B$rJT=8$7$F$/$@$5$$!#(B $B$3$N%U%!%$%k$O%5!<%P$K4X$9$k0lHLE*$JB0@-$r@_Dj$7$^$9(B; @@ -186,24 +391,42 @@ $B%G%#%l%/%H%j$K$"$k(B <code>.htaccess</code> $B%U%!%$%k$r;H$&$3$H$K$h$C$F!"(B $B%G%#%l%/%H%jKh$K@_Dj$G$-$^$9!#(B</p> - <h3>$B%7%9%F%`%?%$%`$r@53N$K@_Dj$7$F$/$@$5$$(B!</h3> - $B8x3+$5$l$k%&%'%V%5!<%P$NE,@Z$JA`:n$K$O!"(BHTTP - $B%W%m%H%3%k$NMWAG$,$=$NF|$N;~4V$H$7$F<($5$l$k$?$a!"(B - $B@53N$J;~4V$,I,MW$H$5$l$^$9!#$G$9$+$i!"$3$l$r5!2q$K(B UNIX $B$K$*$$$F$O(B - NTP $B$d$J$s$i$+$N;~4V$NF14|$r<h$k%7%9%F%`!"(BNT - $B$K$*$$$F$b2?$+$=$l$HF1$8F/$-$r$9$k$b$N$rF3F~$7$F$/$@$5$$!#(B - - <h2>$B%5%]!<%H%W%m%0%i%`$N%3%s%Q%$%k(B</h2> + <h3>$B%5%]!<%H%W%m%0%i%`$N%3%s%Q%$%k(B</h3> $B>e5-$G%3%s%Q%$%k!"@_Dj$5$l$k%a%$%s$N(B <code>httpd</code> $B%5!<%P$NB>$K!"(BApache $B$K$OB??t$N%5%]!<%H%W%m%0%i%`$,4^$^$l$F$$$^$9!#(B $B$3$l$i$OI8=`$G$O%3%s%Q%$%k$5$l$^$;$s!#%5%]!<%H%W%m%0%i%`$O(B <code>support</code> $B%G%#%l%/%H%j$K$"$j$^$9!#(B $B%5%]!<%H%W%m%0%i%`$r%3%s%Q%$%k$9$k$K$O!"$3$N%G%#%l%/%H%j$KF~$j!"(B - $B0J2<$N$h$&$KF~NO$7$F$/$@$5$$(B : + $B0J2<$N$h$&$KF~NO$7$F$/$@$5$$!#(B <pre> make </pre> + + <h2><a id="testing" name="testing">$B%Q%C%1!<%8$N%F%9%H(B</a></h2> + + <p>$B$3$3$G!"0J2<$N%3%^%s%I$r<B9T$9$k$3$H$G!"(BApache HTTP $B$r$9$0$K(B + $B<B9T$G$-$k$h$&$K$J$C$F$$$^$9!#(B</p> +<pre> + $ PREFIX/bin/apachectl start +</pre> + + <p>$B$=$l$+$i(B URL http://localhost/ (Apache $B$r(B root $B$H$7$F$"$k$$$O(B + --without-confadjust $B%*%W%7%g%s$r;H$C$F%S%k%I!"%$%s%9%H!<%k$7$?>l9g(B) + $B$^$?$O(B http://localhost:8080/ (Apache $B$rIaDL$N%f!<%6$G%S%k%I!"(B + $B%$%s%9%H!<%k$7$?>l9g(B) $B$K$h$j:G=i$NJ8=q$r%j%/%(%9%H$G$-$^$9!#(B + $B$=$l$+$i0J2<$K$h$j%5!<%P$r;_$a$F$/$@$5$$!#(B</p> +<pre> + $ PREFIX/bin/apachectl stop +</pre> + + <h2><a id="time" name="time">$B@5$7$$%7%9%F%`;~4V$N@_Dj(B!</a></h2> + <p>$B8x3+$5$l$k%&%'%V%5!<%P$NE,@Z$JA`:n$K$O!"(BHTTP + $B%W%m%H%3%k$NMWAG$,$=$NF|$N;~4V$H$7$F<($5$l$k$?$a!"(B + $B@53N$J;~4V$,I,MW$H$5$l$^$9!#$G$9$+$i!"$3$l$r5!2q$K(B UNIX $B$K$*$$$F$O(B + NTP $B$d$J$s$i$+$N;~4V$NF14|$r<h$k%7%9%F%`!"(BNT + $B$K$*$$$F$b2?$+$=$l$HF1$8F/$-$r$9$k$b$N$rF3F~$7$F$/$@$5$$!#(B</p> + <hr /> <h3 align="CENTER">Apache HTTP Server</h3> diff --git a/usr.sbin/httpd/htdocs/manual/install_1_1.html b/usr.sbin/httpd/htdocs/manual/install_1_1.html new file mode 100644 index 00000000000..f5f0f4d376c --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/install_1_1.html @@ -0,0 +1,124 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<HTML> +<HEAD> +<TITLE>Compiling and Installing Apache</TITLE> +</HEAD> + +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.2 + </H3> +</DIV> + +<h1 ALIGN="CENTER">Compiling and Installing Apache</h1> +<h2>Downloading Apache</h2> +<p>Information on the latest version of Apache can be found on the Apache +web server at http://www.apache.org/. This will list the current release, +any more recent beta-test release, together with details of mirror +web and anonymous ftp sites.</p> + +UnixWare users will want to consult <A HREF="unixware.html">build notes</A> +for various UnixWare versions before compiling. + +<h2>Compiling Apache</h2> +This release of Apache supports the notion of `optional modules'. +However, the server has to know which modules are compiled into it, in +order for those modules to be effective; this requires generation of a +short bit of code (`<code>modules.c</code>') which simply has a list of them. +<p> +If you are satisfied with our standard module set, and expect to +continue to be satisfied with it, then you can just edit the stock +<code>Makefile</code> and compile as you have been doing previously. If you +would +like to select optional modules, however, you need to run the +configuration script. +<p> +To do this: +<ol> +<li>Edit the file `<code>Configuration</code>'. This contains the per-machine +config settings of the Makefile, and also an additional section at +the bottom which lists the modules which have been compiled in, and +also names the files containing them. You will need to: +<ol> +<li> Select a compiler and compilation options as appropriate to +your machine. +<li> Uncomment lines corresponding to those optional modules you wish +to include (among the Module lines at the bottom of the file) +or add new lines corresponding to custom modules you have written. +<p> +Note that DBM auth has to be explicitly configured in, if you want +it; just uncomment the corresponding line. +</ol> +<li> Run the `Configure' script: +<blockquote><code> +% Configure<br> +Using 'Configuration' as config file<br> +%</code></blockquote> + +This generates new versions of the Makefile and of modules.c. If +you want to maintain multiple configurations, you can say, e.g., +<blockquote><code> +% Configure -file Configuration.ai<br> +Using alternate config file Configuration.ai<br> +%</code></blockquote> + +<li>Type `make'. +<p> +The modules we place in the Apache distribution are the ones we have +tested and are used regularly by various members of the Apache +development group. Additional modules contributed by members or third +parties with specific needs or functions are available at +<A HREF="http://www.apache.org/dist/contrib/modules/"><URL:http://www.apache.org/dist/contrib/modules/></A>. There are instructions on that page for +linking these modules into the core Apache code. +</ol> + +<h2>Installing Apache</h2> +After compilation, you will have a binary called `httpd' in the +<code>src/</code> directory. A binary distribution of Apache will supply this +file. +<p> +The next step is to edit the configuration files for the server. In +the subdirectory called `conf' you should find distribution versions +of the three configuration files: <code>srm.conf-dist</code>, +<code>access.conf-dist</code> and <code>httpd.conf-dist</code>. Copy them to +<code>srm.conf</code>, <code>access.conf</code> and <code>httpd.conf</code> +respectively. +<p> +First edit <code>httpd.conf</code>. This sets up general attributes about the +server; the port number, the user it runs as, etc. Next edit the +<code>srm.conf</code> file; this sets up the root of the document tree, +special functions like server-parsed HTML or internal imagemap parsing, etc. +Finally, edit the <code>access.conf</code> file to at least set the base cases +of access. +<p> +Finally, make a call to httpd, with a -f to the full path to the +httpd.conf file. I.e., the common case: +<blockquote><code> + /usr/local/etc/apache/src/httpd -f /usr/local/etc/apache/conf/httpd.conf +</code></blockquote> +The server should be now running. +<p> +By default the <code>srm.conf</code> and <code>access.conf</code> files are +located by name; to specifically call them by other names, use the +<A HREF="mod/core.html#accessconfig">AccessConfig</A> and +<A HREF="mod/core.html#resourceconfig">ResourceConfig</A> directives in +<code>httpd.conf</code>. + +<HR> +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.2 +</H3> + +<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A> + +</BODY> +</HTML> diff --git a/usr.sbin/httpd/htdocs/manual/logs.html b/usr.sbin/httpd/htdocs/manual/logs.html index 5e092afcdf5..0e3e171fbfc 100644 --- a/usr.sbin/httpd/htdocs/manual/logs.html +++ b/usr.sbin/httpd/htdocs/manual/logs.html @@ -195,7 +195,7 @@ part of the job of the web server itself. For more information about this topic, and for applications which perform log analysis, check the <a - href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_analysis/"> + href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_Analysis/"> Open Directory</a> or <a href="http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Log_Analysis_Tools/"> Yahoo</a>.</p> @@ -209,7 +209,7 @@ <p>The format of the access log is highly configurable. The format is specified using a <a - href="mod/mod_log_config.html#format">format string</a> that + href="mod/mod_log_config.html#formats">format string</a> that looks much like a C-style printf(1) format string. Some examples are presented in the next sections. For a complete list of the possible contents of the format string, see the <a @@ -523,22 +523,6 @@ that piped log programs usually run as root. It is therefore very important to keep the programs simple and secure.</p> - <p>Some simple examples using piped logs:</p> - - <blockquote> - <code># compressed logs<br /> - CustomLog "|/usr/bin/gzip -c >> - /var/log/access_log.gz" common<br /> - # almost-real-time name resolution<br /> - CustomLog "|/usr/local/apache/bin/logresolve >> - /var/log/access_log" common</code> - </blockquote> - - <p>Notice that quotes are used to enclose the entire command - that will be called for the pipe. Although these examples are - for the access log, the same technique can be used for the - error log.</p> - <p>One important use of piped logs is to allow log rotation without having to restart the server. The Apache HTTP Server includes a simple program called <a diff --git a/usr.sbin/httpd/htdocs/manual/misc/FAQ.html b/usr.sbin/httpd/htdocs/manual/misc/FAQ.html index b44edbb2ae5..e25fe07b58d 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/FAQ.html +++ b/usr.sbin/httpd/htdocs/manual/misc/FAQ.html @@ -810,22 +810,23 @@ <a id="name" name="name"><strong>Why the name "Apache"?</strong></a> - <p>A cute name which stuck. Apache is "<strong>A + <p>The name 'Apache' was chosen from respect for + the Native American Indian tribe of Apache (Indé), + <a href="http://www.indians.org/welker/apache.htm">well-known + for their superior skills in warfare strategy and their + inexhaustible endurance</a>. For more information on the + Apache Nation, we suggest searching + <a href="http://www.google.com/search?q=Apache+Nation">Google</a>, + <a href="http://www.northernlight.com/nlquery.fcg?qr=Apache+Nation" + >Northernlight</a>, or + <a href="http://www.alltheweb.com/cgi-bin/asearch?query=Apache+Nation" + >AllTheWeb</a>.</p> + + <p>Secondarily, and more popularly (though incorrectly) accepted, + it's a considered cute name which stuck. Apache is "<strong>A PA</strong>t<strong>CH</strong>y server". It was based on some existing code and a series of "patch files".</p> - <p>For many developers it is also a reverent connotation to - the Native American Indian tribe of Apache, <a - href="http://www.indians.org/welker/apache.htm">well-known - for their superior skills in warfare strategy and - inexhaustible endurance</a>. For more information on the - Apache Nation, we suggest searching <a - href="http://www.google.com/search?q=Apache+Nation">Google</a>, - <a - href="http://www.northernlight.com/nlquery.fcg?qr=Apache+Nation"> - Northernlight</a>, or <a - href="http://www.alltheweb.com/cgi-bin/asearch?query=Apache+Nation"> - AllTheWeb</a>.</p> <hr /> </li> @@ -1205,7 +1206,7 @@ <p>Be prepared to respond to any questions about your patches and possibly defend your code. If your patch results in a lot of discussion, you may be asked to submit - an updated patch that incorporate all changes and + an updated patch that incorporates all changes and suggestions.</p> <hr /> </li> @@ -1573,8 +1574,8 @@ connection before it had been completely set up - such as by the end-user pressing the "Stop" button. People's patience being what it is, sites with response-time - problems or slow network links may experiences this more - than high-capacity ones or those with large pipes to the + problems or slow network links may experience this more + than high capacity ones or those with large pipes to the network.</p> <hr /> </li> @@ -1821,18 +1822,9 @@ <p>The shim is not unloaded when Aventail Connect is shut down. Once observed, the problem persists until the shim is either explicitly unloaded or the machine is rebooted. - Instructions for temporarily removing the Aventail Connect - V3.x shim can be found here: "<a - href="http://support.aventail.com/akb/article00386.html">How - to Remove Aventail Connect v3.x from the LSP Order for - Testing Purposes</a>."</p> - - <p>Another potential solution (not tested) is to add + Another potential solution (not tested) is to add <code>apache.exe</code> to the Aventail "Connect Exclusion - List". See this link for details: "<a - href="http://support.aventail.com/akb/article00586.html">How - to Add an Application to Aventail Connect's Application - Exclusion List</a>."</p> + List".</p> <p>Apache is affected in a similar way by <em>any</em> firewall program that isn't correctly configured. Assure @@ -1916,7 +1908,7 @@ </pre> <p>Check your cron jobs to see when/if your server logs are being - rotated. Compare the time of rotation to the error menage time. + rotated. Compare the time of rotation to the error message time. If they are the same, you can somewhat safely assume that the restart is due to your server logs being rotated.</p><hr /> </li> @@ -1929,7 +1921,7 @@ source that is associated with binary compatibility of modules. It is changed when internal Apache structures, function calls and other significant parts of API change in - such a way that binary compatiblity cannot be guaranteed any + such a way that binary compatibility cannot be guaranteed any more. On MMN change, all third party modules have to be at least recompiled, sometimes even slightly changed in order to work with the new version of Apache.</p> @@ -2283,6 +2275,34 @@ href="../mod/core.html#servername">ServerName</a> directive to the config file to tell it what the domain name of the server is.</p> + + <p>The other thing that can occasionally cause this symptom is a + misunderstanding of the <a + href="../mod/mod_alias.html#alias">Alias</a> directive, + resulting in an alias working with a trailing slash, and not + without one. The <code>Alias</code> directive is very literal, + and aliases what you tell it to. Consider the following + example:</p> + + <pre> + Alias /example/ /home/www/example/ + </pre> + + <p>The above directive creates an alias for URLs starting with + <code>/example/</code>, but does <em>not</em> alias URLs + starting with <code>/example</code>. That is to say, a URL such + as <code>http://servername.com/example/</code> will get the + desired content, but a URL such as + <code>http://servername.com/example</code> will result in a + "file not found" error.</p> + + <p>The following <code>Alias</code>, on the other hand, will + work for both cases:</p> + + <pre> + Alias /example /home/www/example + </pre> + <hr /> </li> @@ -2606,7 +2626,7 @@ Options Includes ExecCGI<br /> <hr /></li> - <li><a id="serverheader" name="servername"><strong>How can I change + <li><a id="serverheader" name="serverheader"><strong>How can I change the information that Apache returns about itself in the headers?</strong></a> @@ -3280,7 +3300,9 @@ NameVirtualHost * href="http://www.apacheweek.com/features/userauth"><cite>Using User Authentication</cite></a> or <a href="http://www.apacheweek.com/features/dbmauth"><cite>DBM - User Authentication</cite></a>.</p> + User Authentication</cite></a>, or see the <a + href="../howto/auth.html">authentication tutorial</a> in the + Apache documentation.</p> <hr /> </li> @@ -3891,7 +3913,7 @@ href="../env.html#examples">Environment Variables</a> documentation.</p> program which does whatever you want. However, Apache does offer the ability to prevent requests from ever appearing in the log files. You can do this by using the <a - href="../mod/mod_setenvif.html#SetEnvIf"><code>SetEnvIf</code></a> + href="../mod/mod_setenvif.html#setenvif"><code>SetEnvIf</code></a> directive to set an environment variable for certain requests and then using the conditional <a href="../mod/mod_log_config.html#customlog-conditional"><code> diff --git a/usr.sbin/httpd/htdocs/manual/misc/descriptors.html b/usr.sbin/httpd/htdocs/manual/misc/descriptors.html index ebc7180292b..811ef241aeb 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/descriptors.html +++ b/usr.sbin/httpd/htdocs/manual/misc/descriptors.html @@ -126,7 +126,18 @@ <dd>AIX version 3.2?? appears to have a hard limit of 128 descriptors. End of story. Version 4.1.5 has a hard limit of - 2000.</dd> + 2000. Version 4.3.3 and 5.1 say + <pre> +/* + * Select uses bit masks of file descriptors. + * These macros manipulate such bit fields. + * FD_SETSIZE may be defined by the user to the maximum valued file + * descriptor to be selected; the default here should be == OPEN_MAX + */ +#ifndef FD_SETSIZE +#define FD_SETSIZE 32767 /* must be == OPEN_MAX in <limits.h> */ +#endif +</pre></dd> <dt><strong>SCO OpenServer</strong></dt> diff --git a/usr.sbin/httpd/htdocs/manual/misc/howto.html b/usr.sbin/httpd/htdocs/manual/misc/howto.html index 8ce8520658b..c37b82f933d 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/howto.html +++ b/usr.sbin/httpd/htdocs/manual/misc/howto.html @@ -172,7 +172,7 @@ print "Status: 302 Moved Temporarily\r\n" . reputation for sending hundreds/thousands of requests to each site, often resulting in the site being overloaded. Things have improved dramatically since then, thanks to <a - href="http://info.webcrawler.com/mak/projects/robots/guidelines.html"> + href="http://www.robotstxt.org/wc/guidelines.html"> Guidelines for Robot Writers</a>, but even so, some robots may exhibit unfriendly behavior which the webmaster isn't willing to tolerate, and will want to stop.</p> @@ -187,7 +187,7 @@ print "Status: 302 Moved Temporarily\r\n" . <p>If you decide to exclude robots completely, or just limit the areas in which they can roam, create a <code>robots.txt</code> file; refer to the <a - href="http://info.webcrawler.com/mak/projects/robots/robots.html"> + href="http://www.robotstxt.org/wc/robots.html"> robot information pages</a> provided by Martijn Koster for the syntax.</p> <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/misc/known_bugs.html b/usr.sbin/httpd/htdocs/manual/misc/known_bugs.html new file mode 100644 index 00000000000..95bb37c705d --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/misc/known_bugs.html @@ -0,0 +1,171 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<HTML> +<HEAD> +<TITLE>Apache HTTP Server Project</TITLE> +</HEAD> + +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.2 + </H3> +</DIV> + +<H1 ALIGN="CENTER">Known Bugs in Apache</H1> + +The most up-to-date resource for bug tracking and information is the +<A HREF="http://www.apache.org/bugdb.cgi">Apache bug database</A>. +Significant bugs at release time will also be noted there. +If you are running a 1.2 beta release or version 1.1.3 or earlier +and thing you have found a bug, please upgrade to 1.2. Many bugs +in early versions have been fixed in 1.2. + +<P>See Also: <A HREF="compat_notes.html">Compatibility notes</A></P> +<HR> + +<H2>Apache 1.2 Bugs</H2> + +<OL> + <LI><b>Exists in 1.2.1 only.</b> + On Solaris 2.x the server will stop running after receiving a + SIGHUP. Four workarounds exist (choose one):<p> + <ul> + <li>Retrieve <a href="http://www.apache.org/dist/patches/apply_to_1.2.1/solaris_hup.patch">this patch</a>. + <code>cd</code> to your <code>apache_1.2.1</code> directory, and + type <code>patch -s -p1 < /path/to/patchfile</code>. Then rebuild + Apache.<p> + <li>Use SIGUSR1 instead of SIGHUP, see <a href="../stopping.html"> + Stopping and Restarting Apache</a> for more details.<p> + <li>Add <code>-DNO_SLACK</code> to + <code>EXTRA_CFLAGS</code> in + your <code>Configuration</code> file, re-run <code>Configure</code> + and rebuild your server. This disables the + <a href="descriptors.html">descriptor slack workaround</a><p> + <li>(Least preferable) Use Apache 1.2.0 instead of 1.2.1.<p> + </ul> + This problem will be tracked as + <a href="http://www.apache.org/bugdb.cgi/full/832">PR#832</a>.<p> + </li> + + <LI>(Exists in 1.2.0 and in 1.2.1 after either of the + <code>NO_SLACK</code> or patch provided by the previous bug are applied.) + Solaris 2.5.1 (and probably other versions of Solaris) appear to have + a race condition completely unrelated to all the others. It is possible + during a SIGHUP that the server will fail to start because it will not + be able to re-open its sockets. To our knowledge this has only shown + up during testing when we pummel the server with as many SIGHUP requests + per second as we can. This appears unrelated to the similar sounding bug + described in <a href="http://www.apache.org/bugdb.cgi/full/832">PR#832</a>. + <p> + + <LI><a name="listenbug">On some architectures</A> + if your configuration uses multiple + <a href="../mod/core.html#listen">Listen</a> directives then it is possible + that the server will starve one of the sockets while serving hits on + another. The work-around is to add + <code>-DUSE_FLOCK_SERIALIZED_ACCEPT</code> to the + <code>EXTRA_CFLAGS</code> line in your Configuration and rebuild. + (If you encounter problems with that, you can also try + <code>-DUSE_FCNTL_SERIALIZED_ACCEPT</code>.) + This affects any architecture that doesn't use one of the + <code>USE_xxxxx_SERIALIZED_ACCEPT</code> definitions, see the + source file <code>conf.h</code> for your architecture. + This will be tracked as + <a href="http://www.apache.org/bugdb.cgi/full/467">PR#467</a>. + <P></LI> + + <LI><b>Fixed in 1.2.1.</b> + <a name="cnegbug">Apache's</A> <A HREF="../content-negotiation.html">Content + Negotiation</A> should pick the smallest variant if there + are several that are equally acceptable. A bug in 1.2 means it no + longer does this unless all the variants have character sets. + This <A HREF="../../dist/contrib/patches/1.2/conneg-bug.patch">patch</A> + fixes this problem. It also fixes the problem which makes Apache + pick the last equally acceptable variant instead of the first. + This will be tracked as + <a href="http://www.apache.org/bugdb.cgi/full/94">PR#94</a>. + <P></LI> + + <LI> + The PATH_INFO part of a request URI cannot include the sequence + <CODE>%2f</CODE>. This will be tracked as + <A HREF="http://www.apache.org/bugdb.cgi/full/543">PR#543</A>. + <P></LI> + + <LI>Users of early 1.2 betas reported problems with many + connections stuck in the FIN_WAIT_2 state due to server + timeouts. Several changes were made during the beta testing of 1.2 + to reduce this problem as much as possible, although you may still + see sockets in FIN_WAIT_2 state due to network or operating system + issues outside the control of Apache. See our <A + HREF="fin_wait_2.html">FIN_WAIT_2</A> page for more details. + + <P>SunOS4 has a kernel bug in the allocation of memory for the mbuf table. + When it fills up, the result is a Panic the next time any routine tries + to set something in an imaginary mbuf beyond the range of the table. + Due to buggy browser behavior and the lack of a FIN_WAIT_2 timeout + on SunOS4, "KeepAlive Off" is necessary to avoid filling up the mbuf + table on busy sites. + <P></LI> + + <LI>Compilation fails on SCO3 when using gcc instead of cc, complaining + with "<CODE>gcc: noinline: No such file or directory</CODE>". Fix + is given in <a href="http://www.apache.org/bugdb.cgi/full/695">PR#695</A>. + <P></LI> + + <LI>If compilation fails complaining about "unknown symbol __inet_ntoa()" + then you have probably installed version 8 of bind. You will need to + explicitly link with the bind library by adding <CODE>-lbind</CODE> + to <CODE>EXTRA_LDFLAGS</CODE> in <CODE>Configuration</CODE>. See + <A HREF="http://www.apache.org/bugdb.cgi/full/616">PR#616</A> + and the + <A HREF="FAQ.html#bind8.1">Apache FAQ</A>. + <P></LI> + + <LI>The message "<CODE>created shared memory segment #730499</CODE>" + in error_log is not an error and should be ignored. See + <a href="http://www.apache.org/bugdb.cgi/full/696">PR#696</A>. + <P></LI> + + <LI> + Compiling on Solaris 2 with SunSoft's C compiler gives the warning + <CODE>"mod_include.c", line 1123: warning: end-of-loop code not + reached</CODE>. This is a bogus warning and can be ignored. + See <A HREF="http://www.apache.org/bugdb.cgi/full/681">PR#681</A>. + <P></LI> + + <LI><a href="descriptors.html"><b>Workaround available in 1.2.1.</b></a> + There appears to be a problem on BSDI 2.1 with large numbers of + virtual hosts. This appears similar to a file-descriptor limit + but BSDI should not have this problem. This will be tracked as + <A HREF="http://www.apache.org/bugdb.cgi/full/611">PR#611</A>. + See also the <A HREF="FAQ.html#fdlim">Apache FAQ</A>. + <P></LI> + + <LI><a href="descriptors.html"><b>Workaround available in 1.2.1.</b></a> + Solaris 2 has problems with large numbers of virtual hosts. This is + because of an operating system limit of 256 file pointers, not due + to Apache. See also the <A HREF="FAQ.html#fdlim">Apache FAQ</A>. + <P></LI> + +</OL> + +<HR> +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.2 +</H3> + +<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A> +<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A> + +</BODY> +</HTML> + diff --git a/usr.sbin/httpd/htdocs/manual/misc/known_client_problems.html b/usr.sbin/httpd/htdocs/manual/misc/known_client_problems.html index ca0ff6eedd3..f2e87c55f84 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/known_client_problems.html +++ b/usr.sbin/httpd/htdocs/manual/misc/known_client_problems.html @@ -247,9 +247,9 @@ regardless of how far in the future the expiry time is set. There is no workaround supplied with Apache, however there are hacks for <a - href="http://www.arctic.org/~dgaudet/patches/apache-1.2-gif89-expires-hack.patch"> + href="http://arctic.org/~dean/patches/apache-1.2-gif89-expires-hack.patch"> 1.2</a> and for <a - href="http://www.arctic.org/~dgaudet/patches/apache-1.3-gif89-expires-hack.patch"> + href="http://arctic.org/~dean/patches/apache-1.3-gif89-expires-hack.patch"> 1.3</a>.</p> <h3><a id="no-content-length" @@ -262,7 +262,7 @@ Netscapes provides some <a href="http://help.netscape.com/kb/client/971014-42.html">information</a>. There's also <a - href="http://www.arctic.org/~dgaudet/apache/no-content-length/"> + href="http://arctic.org/~dean/apache/no-content-length/"> some information</a> about the actual problem.</p> <h3><a id="jdk-12-bugs" name="jdk-12-bugs">JDK 1.2 betas lose diff --git a/usr.sbin/httpd/htdocs/manual/misc/nopgp.html b/usr.sbin/httpd/htdocs/manual/misc/nopgp.html index 3054170f953..eeafb9699db 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/nopgp.html +++ b/usr.sbin/httpd/htdocs/manual/misc/nopgp.html @@ -68,11 +68,11 @@ <ul> <li><a - href="http://www.yahoo.com/Computers_and_Internet/Security_and_Encryption/"> + href="http://dir.yahoo.com/Computers_and_Internet/security_and_encryption/"> Yahoo - Science: Mathematics: Security and Encryption</a></li> - <li><a href="http://www.eff.org/pub/Privacy/Crypto/">EFF + <li><a href="http://www.eff.org/Privacy/Crypto/">EFF Crypto/Privacy/Security Archive</a></li> <li><a diff --git a/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html b/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html index 7612fae8ad0..368a212b65f 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html +++ b/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html @@ -9,8 +9,8 @@ </head> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> - <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" - vlink="#000080" alink="#FF0000"> + <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#000080" + alink="#FF0000"> <div align="CENTER"> <img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]" /> @@ -25,20 +25,28 @@ <ul> <li><a href="#introduction">Introduction</a></li> - <li><a href="#hardware">Hardware and Operating System - Issues</a></li> + <li><a href="#hardware">Hardware and Operating System Issues</a></li> <li><a href="#runtime">Run-Time Configuration Issues</a></li> - <li><a href="#compiletime">Compile-Time Configuration - Issues</a></li> + <!-- + Contains subsections: + #dns + #symlinks + #htaccess + #negotiation + #process + #modules + #mmap + --> + + <li><a href="#compiletime">Compile-Time Configuration Issues</a></li> <li> Appendixes <ul> - <li><a href="#trace">Detailed Analysis of a - Trace</a></li> + <li><a href="#trace">Detailed Analysis of a Trace</a></li> <li><a href="#patches">Patches Available</a></li> @@ -48,88 +56,95 @@ </ul> <hr /> - <h3><a id="introduction" - name="introduction">Introduction</a></h3> + <h3><a id="introduction" name="introduction">Introduction</a></h3> - <p>Apache is a general webserver, which is designed to be - correct first, and fast second. Even so, its performance is - quite satisfactory. Most sites have less than 10Mbits of - outgoing bandwidth, which Apache can fill using only a low end - Pentium-based webserver. In practice sites with more bandwidth - require more than one machine to fill the bandwidth due to - other constraints (such as CGI or database transaction - overhead). For these reasons the development focus has been - mostly on correctness and configurability.</p> + <p>Apache is a general webserver, which is designed to be correct + first, and fast second. Even so, its performance is quite satisfactory. + Most sites have less than 10Mbits of outgoing bandwidth, which Apache + can fill using only a low end Pentium-based webserver. In practice, + sites with more bandwidth require more than one machine to fill the + bandwidth due to other constraints (such as CGI or database transaction + overhead). For these reasons, the development focus has been mostly on + correctness and configurability.</p> <p>Unfortunately many folks overlook these facts and cite raw - performance numbers as if they are some indication of the - quality of a web server product. There is a bare minimum - performance that is acceptable, beyond that extra speed only - caters to a much smaller segment of the market. But in order to - avoid this hurdle to the acceptance of Apache in some markets, - effort was put into Apache 1.3 to bring performance up to a - point where the difference with other high-end webservers is - minimal.</p> - - <p>Finally there are the folks who just plain want to see how - fast something can go. The author falls into this category. The - rest of this document is dedicated to these folks who want to - squeeze every last bit of performance out of Apache's current - model, and want to understand why it does some things which - slow it down.</p> - - <p>Note that this is tailored towards Apache 1.3 on Unix. Some - of it applies to Apache on NT. Apache on NT has not been tuned - for performance yet; in fact it probably performs very poorly - because NT performance requires a different programming - model.</p> + performance numbers as if they are some indication of the quality of a + web server product. There is a bare minimum performance that is + acceptable, beyond that, extra speed only caters to a much smaller + segment of the market. But in order to avoid this hurdle to the + acceptance of Apache in some markets, effort was put into Apache 1.3 to + bring performance up to a point where the difference with other + high-end webservers is minimal.</p> + + <p>Finally there are the folks who just want to see how fast something + can go. The author falls into this category. The rest of this document + is dedicated to these folks who want to squeeze every last bit of + performance out of Apache's current model, and want to understand why + it does some things which slow it down.</p> + + <p>Note that this is tailored towards Apache 1.3 on Unix. Some of it + applies to Apache on NT. Apache on NT has not been tuned for + performance yet; in fact it probably performs very poorly because NT + performance requires a different programming model.</p> <hr /> - <h3><a id="hardware" name="hardware">Hardware and Operating - System Issues</a></h3> - - <p>The single biggest hardware issue affecting webserver - performance is RAM. A webserver should never ever have to swap, - swapping increases the latency of each request beyond a point - that users consider "fast enough". This causes users to hit - stop and reload, further increasing the load. You can, and - should, control the <code>MaxClients</code> setting so that - your server does not spawn so many children it starts - swapping.</p> - - <p>Beyond that the rest is mundane: get a fast enough CPU, a - fast enough network card, and fast enough disks, where "fast - enough" is something that needs to be determined by - experimentation.</p> - - <p>Operating system choice is largely a matter of local - concerns. But a general guideline is to always apply the latest - vendor TCP/IP patches. HTTP serving completely breaks many of - the assumptions built into Unix kernels up through 1994 and - even 1995. Good choices include recent FreeBSD, and Linux.</p> + <h3><a id="hardware" name="hardware">Hardware and Operating System + Issues</a></h3> + + <p>The single biggest hardware issue affecting webserver performance is + RAM. A webserver should never ever have to swap, as swapping increases + the latency of each request beyond a point that users consider "fast + enough". This causes users to hit stop and reload, further increasing + the load. You can, and should, control the <code>MaxClients</code> + setting so that your server does not spawn so many children it starts + swapping. The procedure for doing this is simple: determine the size of + your average Apache process, by looking at your process list via a tool + such as <code>top</code>, and divide this into your total available + memory, leaving some room for other processes.</p> + + <p>Beyond that the rest is mundane: get a fast enough CPU, a fast + enough network card, and fast enough disks, where "fast enough" is + something that needs to be determined by experimentation.</p> + + <p>Operating system choice is largely a matter of local concerns. But a + general guideline is to always apply the latest vendor TCP/IP + patches.</p> <hr /> <h3><a id="runtime" name="runtime">Run-Time Configuration Issues</a></h3> - <h4>HostnameLookups</h4> - - <p>Prior to Apache 1.3, <code>HostnameLookups</code> defaulted - to On. This adds latency to every request because it requires a - DNS lookup to complete before the request is finished. In - Apache 1.3 this setting defaults to Off. However (1.3 or - later), if you use any <code>Allow from domain</code> or - <code>Deny from domain</code> directives then you will pay for - a double reverse DNS lookup (a reverse, followed by a forward - to make sure that the reverse is not being spoofed). So for the - highest performance avoid using these directives (it's fine to - use IP addresses rather than domain names).</p> - - <p>Note that it's possible to scope the directives, such as - within a <code><Location /server-status></code> section. - In this case the DNS lookups are only performed on requests - matching the criteria. Here's an example which disables lookups - except for .html and .cgi files:</p> + <h4><a id="dns" name="dns"><code>HostnameLookups</code> and other DNS considerations</a></h4> + + <p>Prior to Apache 1.3, <a + href="../mod/core.html#hostnamelookups"><code>HostnameLookups</code></a> + defaulted to <code>On</code>. This adds latency to every request + because it requires a DNS lookup to complete before the request is + finished. In Apache 1.3 this setting defaults to <code>Off</code>. If + you need to have addresses in your log files resolved to hostnames, use + the <a href="../programs/logresolve.html">logresolve</a> program that + comes with Apache, or one of the numerous log reporting packages which + are available.</p> + + <p>It is recommended that you do this sort of postprocessing of your + log files on some machine other than the production web server machine, + in order that this activity not adversely affect server + performance.</p> + + <p>If you use any <code><a + href="../mod/mod_access.html#allow">Allow</a> from domain</code> or + <code><a href="../mod/mod_access.html#deny">Deny</a> from domain</code> + directives (i.e., using a hostname, or a domain name, rather than an IP + address) then you will pay for a double reverse DNS lookup (a reverse, + followed by a forward to make sure that the reverse is not being + spoofed). For best performance, therefore, use IP addresses, rather + than names, when using these directives, if possible.</p> + + <p>Note that it's possible to scope the directives, such as within a + <code><Location /server-status></code> section. In this case the + DNS lookups are only performed on requests matching the criteria. + Here's an example which disables lookups except for .html and .cgi + files:</p> <blockquote> <pre> @@ -139,27 +154,18 @@ HostnameLookups off </Files> </pre> </blockquote> - But even still, if you just need DNS names in some CGIs you - could consider doing the <code>gethostbyname</code> call in the - specific CGIs that need it. - - <p>Similarly, if you need to have hostname information in your - server logs in order to generate reports of this information, - you can postprocess your log file with <a - href="../programs/logresolve.html">logresolve</a>, so that - these lookups can be done without making the client wait. It is - recommended that you do this postprocessing, and any other - statistical analysis of the log file, somewhere other than your - production web server machine, in order that this activity does - not adversely affect server performance.</p> - - <h4>FollowSymLinks and SymLinksIfOwnerMatch</h4> + + <p>But even still, if you just need DNS names in some CGIs you could + consider doing the <code>gethostbyname</code> call in the specific CGIs + that need it.</p> + + <h4><a id="symlinks" name="symlinks">FollowSymLinks and SymLinksIfOwnerMatch</a></h4> <p>Wherever in your URL-space you do not have an <code>Options FollowSymLinks</code>, or you do have an <code>Options - SymLinksIfOwnerMatch</code> Apache will have to issue extra - system calls to check up on symlinks. One extra call per - filename component. For example, if you had:</p> + SymLinksIfOwnerMatch</code> Apache will have to issue extra system + calls to check up on symlinks. One extra call per filename component. + For example, if you had:</p> <blockquote> <pre> @@ -169,13 +175,13 @@ DocumentRoot /www/htdocs </Directory> </pre> </blockquote> - and a request is made for the URI <code>/index.html</code>. - Then Apache will perform <code>lstat(2)</code> on - <code>/www</code>, <code>/www/htdocs</code>, and - <code>/www/htdocs/index.html</code>. The results of these - <code>lstats</code> are never cached, so they will occur on - every single request. If you really desire the symlinks - security checking you can do something like this: + + <p>and a request is made for the URI <code>/index.html</code>. Then + Apache will perform <code>lstat(2)</code> on <code>/www</code>, + <code>/www/htdocs</code>, and <code>/www/htdocs/index.html</code>. The + results of these <code>lstats</code> are never cached, so they will + occur on every single request. If you really desire the symlinks + security checking you can do something like this:</p> <blockquote> <pre> @@ -188,20 +194,19 @@ DocumentRoot /www/htdocs </Directory> </pre> </blockquote> - This at least avoids the extra checks for the - <code>DocumentRoot</code> path. Note that you'll need to add - similar sections if you have any <code>Alias</code> or - <code>RewriteRule</code> paths outside of your document root. - For highest performance, and no symlink protection, set - <code>FollowSymLinks</code> everywhere, and never set - <code>SymLinksIfOwnerMatch</code>. - <h4>AllowOverride</h4> + <p>This at least avoids the extra checks for the + <code>DocumentRoot</code> path. Note that you'll need to add similar + sections if you have any <code>Alias</code> or <code>RewriteRule</code> + paths outside of your document root. For highest performance, and no + symlink protection, set <code>FollowSymLinks</code> everywhere, and + never set <code>SymLinksIfOwnerMatch</code>.</p> + + <h4><a id="htaccess" name="htaccess">AllowOverride</a></h4> <p>Wherever in your URL-space you allow overrides (typically <code>.htaccess</code> files) Apache will attempt to open - <code>.htaccess</code> for each filename component. For - example,</p> + <code>.htaccess</code> for each filename component. For example,</p> <blockquote> <pre> @@ -211,118 +216,183 @@ DocumentRoot /www/htdocs </Directory> </pre> </blockquote> - and a request is made for the URI <code>/index.html</code>. - Then Apache will attempt to open <code>/.htaccess</code>, - <code>/www/.htaccess</code>, and - <code>/www/htdocs/.htaccess</code>. The solutions are similar - to the previous case of <code>Options FollowSymLinks</code>. - For highest performance use <code>AllowOverride None</code> - everywhere in your filesystem. - - <h4>Negotiation</h4> - - <p>If at all possible, avoid content-negotiation if you're - really interested in every last ounce of performance. In - practice the benefits of negotiation outweigh the performance - penalties. There's one case where you can speed up the server. - Instead of using a wildcard such as:</p> + + <p>and a request is made for the URI <code>/index.html</code>. Then + Apache will attempt to open <code>/.htaccess</code>, + <code>/www/.htaccess</code>, and <code>/www/htdocs/.htaccess</code>. + The solutions are similar to the previous case of <code>Options + FollowSymLinks</code>. For highest performance use <code>AllowOverride + None</code> everywhere in your filesystem.</p> + + <p>See also the <a href="../howto/htaccess.html">.htaccess tutorial</a> + for further discussion of this.</p> + + <h4><a id="negotiation" name="negotiation">Negotiation</a></h4> + + <p>If at all possible, avoid content-negotiation if you're really + interested in every last ounce of performance. In practice the benefits + of negotiation outweigh the performance penalties. There's one case + where you can speed up the server. Instead of using a wildcard such + as:</p> <blockquote> <pre> DirectoryIndex index </pre> </blockquote> - Use a complete list of options: + + <p>Use a complete list of options:</p> <blockquote> <pre> DirectoryIndex index.cgi index.pl index.shtml index.html </pre> </blockquote> - where you list the most common choice first. - - <h4>Process Creation</h4> - - <p>Prior to Apache 1.3 the <code>MinSpareServers</code>, - <code>MaxSpareServers</code>, and <code>StartServers</code> - settings all had drastic effects on benchmark results. In - particular, Apache required a "ramp-up" period in order to - reach a number of children sufficient to serve the load being - applied. After the initial spawning of - <code>StartServers</code> children, only one child per second - would be created to satisfy the <code>MinSpareServers</code> - setting. So a server being accessed by 100 simultaneous - clients, using the default <code>StartServers</code> of 5 would - take on the order 95 seconds to spawn enough children to handle - the load. This works fine in practice on real-life servers, - because they aren't restarted frequently. But does really - poorly on benchmarks which might only run for ten minutes.</p> - - <p>The one-per-second rule was implemented in an effort to - avoid swamping the machine with the startup of new children. If - the machine is busy spawning children it can't service - requests. But it has such a drastic effect on the perceived - performance of Apache that it had to be replaced. As of Apache - 1.3, the code will relax the one-per-second rule. It will spawn - one, wait a second, then spawn two, wait a second, then spawn - four, and it will continue exponentially until it is spawning - 32 children per second. It will stop whenever it satisfies the + + <p>where you list the most common choice first.</p> + + <p>If your site needs content negotiation, consider using + <code>type-map</code> files rather than the <code>Options + MultiViews</code> directive to accomplish the negotiation. See the <a + href="../content-negotiation.html">Content Negotiation</a> + documentation for a full discussion of the methods of negotiation, and + instructions for creating <code>type-map</code> files.</p> + + <h4><a name="process" id="process">Process Creation</a></h4> + + <p>Prior to Apache 1.3 the <a + href="../mod/core.html#minspareservers"><code>MinSpareServers</code></a>, + <a + href="../mod/core.html#maxspareservers"><code>MaxSpareServers</code></a>, + and <a + href="../mod/core.html#startservers"><code>StartServers</code></a> + settings all had drastic effects on benchmark results. In particular, + Apache required a "ramp-up" period in order to reach a number of + children sufficient to serve the load being applied. After the initial + spawning of <code>StartServers</code> children, only one child per + second would be created to satisfy the <code>MinSpareServers</code> + setting. So a server being accessed by 100 simultaneous clients, using + the default <code>StartServers</code> of 5 would take on the order 95 + seconds to spawn enough children to handle the load. This works fine in + practice on real-life servers, because they aren't restarted + frequently. But results in poor performance on benchmarks, which might + only run for ten minutes.</p> + + <p>The one-per-second rule was implemented in an effort to avoid + swamping the machine with the startup of new children. If the machine + is busy spawning children it can't service requests. But it has such a + drastic effect on the perceived performance of Apache that it had to be + replaced. As of Apache 1.3, the code will relax the one-per-second + rule. It will spawn one, wait a second, then spawn two, wait a second, + then spawn four, and it will continue exponentially until it is + spawning 32 children per second. It will stop whenever it satisfies the <code>MinSpareServers</code> setting.</p> - <p>This appears to be responsive enough that it's almost - unnecessary to twiddle the <code>MinSpareServers</code>, - <code>MaxSpareServers</code> and <code>StartServers</code> - knobs. When more than 4 children are spawned per second, a - message will be emitted to the <code>ErrorLog</code>. If you - see a lot of these errors then consider tuning these settings. - Use the <code>mod_status</code> output as a guide.</p> + <p>This appears to be responsive enough that it's almost unnecessary to + adjust the <code>MinSpareServers</code>, <code>MaxSpareServers</code> + and <code>StartServers</code> settings. When more than 4 children are + spawned per second, a message will be emitted to the + <code>ErrorLog</code>. If you see a lot of these errors then consider + tuning these settings. Use the <code>mod_status</code> output as a + guide.</p> + + <p>In particular, you may need to set <code>MinSpareServers</code> + higher if traffic on your site is extremely bursty - that is, if the + number of connections to your site fluctuates radically in short + periods of time. This may be the case, for example, if traffic to your + site is highly event-driven, such as sites for major sports events, or + other sites where users are encouraged to visit the site at a + particular time.</p> <p>Related to process creation is process death induced by the - <code>MaxRequestsPerChild</code> setting. By default this is 0, - which means that there is no limit to the number of requests - handled per child. If your configuration currently has this set - to some very low number, such as 30, you may want to bump this - up significantly. If you are running SunOS or an old version of - Solaris, limit this to 10000 or so because of memory leaks.</p> - - <p>When keep-alives are in use, children will be kept busy - doing nothing waiting for more requests on the already open - connection. The default <code>KeepAliveTimeout</code> of 15 - seconds attempts to minimize this effect. The tradeoff here is - between network bandwidth and server resources. In no event - should you raise this above about 60 seconds, as <a - href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html"> + <code>MaxRequestsPerChild</code> setting. By default this is 0, which + means that there is no limit to the number of requests handled per + child. If your configuration currently has this set to some very low + number, such as 30, you may want to bump this up significantly. If you + are running SunOS or an old version of Solaris, limit this to 10000 or + so because of memory leaks.</p> + + <p>When keep-alives are in use, children will be kept busy doing + nothing waiting for more requests on the already open connection. The + default <code>KeepAliveTimeout</code> of 15 seconds attempts to + minimize this effect. The tradeoff here is between network bandwidth + and server resources. In no event should you raise this above about 60 + seconds, as <a + href="http://www.research.compaq.com/wrl/techreports/abstracts/95.4.html"> most of the benefits are lost</a>.</p> + + <h4><a name="modules" id="modules">Modules</a></h4> + + <p>Since memory usage is such an important consideration in + performance, you should attempt to eliminate modules that you are not + actually using. If you have built the modules as <a + href="../dso.html">DSOs</a>, eliminating modules is a simple matter of + commenting out the associated <a + href="../mod/core.html#addmodule.html">AddModule</a> and <a + href="../mod/mod_so.html#loadmodule.html">LoadModule</a> directives for + that module. This allows you to experiment with removing modules, and + seeing if your site still functions in their absence.</p> + + <p>If, on the other hand, you have modules statically linked into your + Apache binary, you will need to recompile Apache in order to remove + unwanted modules.</p> + + <p>An associated question that arises here is, of course, what modules + you need, and which ones you don't. The answer here will, of course, + vary from one web site to another. However, the <i>minimal</i> list of + modules which you can get by with tends to include <a + href="../mod/mod_mime.html">mod_mime</a>, <a + href="../mod/mod_dir.html">mod_dir</a>, and <a + href="../mod/mod_log_config.html">mod_log_config</a>. + <code>mod_log_config</code> is, of course, optional, as you can run a + web site without log files. This is, however, not recommended.</p> + + <h4><a name="mmap" id="mmap">mod_mmap_static</a></h4> + + <p>Apache comes with a module, <a + href="../mod/mod_mmap_static.html">mod_mmap_static</a>, which is not + enabled by default, which allows you to map files into RAM, and + serve them directly from memory rather than from the disc, which + should result in substantial performance improvement for + frequently-requests files. Note that when files are modified, you + will need to restart your server in order to serve the latest + version of the file, so this is not appropriate for files which + change frequently. See the documentation for this module for more + complete details.</p> + <hr /> - <h3><a id="compiletime" name="compiletime">Compile-Time - Configuration Issues</a></h3> + <h3><a id="compiletime" name="compiletime">Compile-Time Configuration + Issues</a></h3> <h4>mod_status and ExtendedStatus On</h4> - <p>If you include <code>mod_status</code> and you also set - <code>ExtendedStatus On</code> when building and running - Apache, then on every request Apache will perform two calls to - <code>gettimeofday(2)</code> (or <code>times(2)</code> - depending on your operating system), and (pre-1.3) several - extra calls to <code>time(2)</code>. This is all done so that - the status report contains timing indications. For highest - performance, set <code>ExtendedStatus off</code> (which is the - default).</p> + <p>If you include <a + href="../mod/mod_status.html"><code>mod_status</code></a> and you also + set <code>ExtendedStatus On</code> when building and running Apache, + then on every request Apache will perform two calls to + <code>gettimeofday(2)</code> (or <code>times(2)</code> depending on + your operating system), and (pre-1.3) several extra calls to + <code>time(2)</code>. This is all done so that the status report + contains timing indications. For highest performance, set + <code>ExtendedStatus off</code> (which is the default).</p> + + <p><code>mod_status</code> should probably be configured to allow + access by only a few users, rather than to the general public, so this + will likely have very low impact on your overall performance.</p> <h4>accept Serialization - multiple sockets</h4> - <p>This discusses a shortcoming in the Unix socket API. Suppose - your web server uses multiple <code>Listen</code> statements to - listen on either multiple ports or multiple addresses. In order - to test each socket to see if a connection is ready Apache uses - <code>select(2)</code>. <code>select(2)</code> indicates that a - socket has <em>zero</em> or <em>at least one</em> connection - waiting on it. Apache's model includes multiple children, and - all the idle ones test for new connections at the same time. A - naive implementation looks something like this (these examples - do not match the code, they're contrived for pedagogical - purposes):</p> + <p>This discusses a shortcoming in the Unix socket API. Suppose your + web server uses multiple <code>Listen</code> statements to listen on + either multiple ports or multiple addresses. In order to test each + socket to see if a connection is ready Apache uses + <code>select(2)</code>. <code>select(2)</code> indicates that a socket + has <em>zero</em> or <em>at least one</em> connection waiting on it. + Apache's model includes multiple children, and all the idle ones test + for new connections at the same time. A naive implementation looks + something like this (these examples do not match the code, they're + contrived for pedagogical purposes):</p> <blockquote> <pre> @@ -349,42 +419,37 @@ DirectoryIndex index.cgi index.pl index.shtml index.html } </pre> </blockquote> - But this naive implementation has a serious starvation problem. - Recall that multiple children execute this loop at the same - time, and so multiple children will block at - <code>select</code> when they are in between requests. All - those blocked children will awaken and return from - <code>select</code> when a single request appears on any socket - (the number of children which awaken varies depending on the - operating system and timing issues). They will all then fall - down into the loop and try to <code>accept</code> the - connection. But only one will succeed (assuming there's still - only one connection ready), the rest will be <em>blocked</em> - in <code>accept</code>. This effectively locks those children - into serving requests from that one socket and no other - sockets, and they'll be stuck there until enough new requests - appear on that socket to wake them all up. This starvation - problem was first documented in <a - href="http://bugs.apache.org/index/full/467">PR#467</a>. There - are at least two solutions. - - <p>One solution is to make the sockets non-blocking. In this - case the <code>accept</code> won't block the children, and they - will be allowed to continue immediately. But this wastes CPU - time. Suppose you have ten idle children in - <code>select</code>, and one connection arrives. Then nine of - those children will wake up, try to <code>accept</code> the - connection, fail, and loop back into <code>select</code>, - accomplishing nothing. Meanwhile none of those children are - servicing requests that occurred on other sockets until they - get back up to the <code>select</code> again. Overall this - solution does not seem very fruitful unless you have as many - idle CPUs (in a multiprocessor box) as you have idle children, - not a very likely situation.</p> - - <p>Another solution, the one used by Apache, is to serialize - entry into the inner loop. The loop looks like this - (differences highlighted):</p> + But this naive implementation has a serious starvation problem. Recall + that multiple children execute this loop at the same time, and so + multiple children will block at <code>select</code> when they are in + between requests. All those blocked children will awaken and return + from <code>select</code> when a single request appears on any socket + (the number of children which awaken varies depending on the operating + system and timing issues). They will all then fall down into the loop + and try to <code>accept</code> the connection. But only one will + succeed (assuming there's still only one connection ready), the rest + will be <em>blocked</em> in <code>accept</code>. This effectively locks + those children into serving requests from that one socket and no other + sockets, and they'll be stuck there until enough new requests appear on + that socket to wake them all up. This starvation problem was first + documented in <a + href="http://bugs.apache.org/index/full/467">PR#467</a>. There are at + least two solutions. + + <p>One solution is to make the sockets non-blocking. In this case the + <code>accept</code> won't block the children, and they will be allowed + to continue immediately. But this wastes CPU time. Suppose you have ten + idle children in <code>select</code>, and one connection arrives. Then + nine of those children will wake up, try to <code>accept</code> the + connection, fail, and loop back into <code>select</code>, accomplishing + nothing. Meanwhile none of those children are servicing requests that + occurred on other sockets until they get back up to the + <code>select</code> again. Overall this solution does not seem very + fruitful unless you have as many idle CPUs (in a multiprocessor box) as + you have idle children, not a very likely situation.</p> + + <p>Another solution, the one used by Apache, is to serialize entry into + the inner loop. The loop looks like this (differences highlighted):</p> <blockquote> <pre> @@ -415,158 +480,141 @@ DirectoryIndex index.cgi index.pl index.shtml index.html </blockquote> <a id="serialize" name="serialize">The functions</a> <code>accept_mutex_on</code> and <code>accept_mutex_off</code> - implement a mutual exclusion semaphore. Only one child can have - the mutex at any time. There are several choices for - implementing these mutexes. The choice is defined in - <code>src/conf.h</code> (pre-1.3) or - <code>src/include/ap_config.h</code> (1.3 or later). Some - architectures do not have any locking choice made, on these - architectures it is unsafe to use multiple <code>Listen</code> - directives. + implement a mutual exclusion semaphore. Only one child can have the + mutex at any time. There are several choices for implementing these + mutexes. The choice is defined in <code>src/conf.h</code> (pre-1.3) or + <code>src/include/ap_config.h</code> (1.3 or later). Some architectures + do not have any locking choice made, on these architectures it is + unsafe to use multiple <code>Listen</code> directives. <dl> <dt><code>HAVE_FLOCK_SERIALIZED_ACCEPT</code></dt> - <dd>This method uses the <code>flock(2)</code> system call to - lock a lock file (located by the <code>LockFile</code> - directive).</dd> + <dd>This method uses the <code>flock(2)</code> system call to lock a + lock file (located by the <code>LockFile</code> directive).</dd> <dt><code>HAVE_FCNTL_SERIALIZED_ACCEPT</code></dt> - <dd>This method uses the <code>fcntl(2)</code> system call to - lock a lock file (located by the <code>LockFile</code> - directive).</dd> + <dd>This method uses the <code>fcntl(2)</code> system call to lock a + lock file (located by the <code>LockFile</code> directive).</dd> <dt><code>HAVE_SYSVSEM_SERIALIZED_ACCEPT</code></dt> <dd>(1.3 or later) This method uses SysV-style semaphores to - implement the mutex. Unfortunately SysV-style semaphores have - some bad side-effects. One is that it's possible Apache will - die without cleaning up the semaphore (see the - <code>ipcs(8)</code> man page). The other is that the - semaphore API allows for a denial of service attack by any - CGIs running under the same uid as the webserver - (<em>i.e.</em>, all CGIs, unless you use something like - suexec or cgiwrapper). For these reasons this method is not - used on any architecture except IRIX (where the previous two - are prohibitively expensive on most IRIX boxes).</dd> + implement the mutex. Unfortunately SysV-style semaphores have some + bad side-effects. One is that it's possible Apache will die without + cleaning up the semaphore (see the <code>ipcs(8)</code> man page). + The other is that the semaphore API allows for a denial of service + attack by any CGIs running under the same uid as the webserver + (<em>i.e.</em>, all CGIs, unless you use something like suexec or + cgiwrapper). For these reasons this method is not used on any + architecture except IRIX (where the previous two are prohibitively + expensive on most IRIX boxes).</dd> <dt><code>HAVE_USLOCK_SERIALIZED_ACCEPT</code></dt> - <dd>(1.3 or later) This method is only available on IRIX, and - uses <code>usconfig(2)</code> to create a mutex. While this - method avoids the hassles of SysV-style semaphores, it is not - the default for IRIX. This is because on single processor - IRIX boxes (5.3 or 6.2) the uslock code is two orders of - magnitude slower than the SysV-semaphore code. On - multi-processor IRIX boxes the uslock code is an order of - magnitude faster than the SysV-semaphore code. Kind of a - messed up situation. So if you're using a multiprocessor IRIX - box then you should rebuild your webserver with + <dd>(1.3 or later) This method is only available on IRIX, and uses + <code>usconfig(2)</code> to create a mutex. While this method avoids + the hassles of SysV-style semaphores, it is not the default for IRIX. + This is because on single processor IRIX boxes (5.3 or 6.2) the + uslock code is two orders of magnitude slower than the SysV-semaphore + code. On multi-processor IRIX boxes the uslock code is an order of + magnitude faster than the SysV-semaphore code. Kind of a messed up + situation. So if you're using a multiprocessor IRIX box then you + should rebuild your webserver with <code>-DHAVE_USLOCK_SERIALIZED_ACCEPT</code> on the <code>EXTRA_CFLAGS</code>.</dd> <dt><code>HAVE_PTHREAD_SERIALIZED_ACCEPT</code></dt> - <dd>(1.3 or later) This method uses POSIX mutexes and should - work on any architecture implementing the full POSIX threads - specification, however appears to only work on Solaris (2.5 - or later), and even then only in certain configurations. If - you experiment with this you should watch out for your server - hanging and not responding. Static content only servers may - work just fine.</dd> + <dd>(1.3 or later) This method uses POSIX mutexes and should work on + any architecture implementing the full POSIX threads specification, + however appears to only work on Solaris (2.5 or later), and even then + only in certain configurations. If you experiment with this you + should watch out for your server hanging and not responding. Static + content only servers may work just fine.</dd> </dl> - <p>If your system has another method of serialization which - isn't in the above list then it may be worthwhile adding code - for it (and submitting a patch back to Apache). The above - <code>HAVE_METHOD_SERIALIZED_ACCEPT</code> defines specify - which method is available and works on the platform (you can - have more than one); <code>USE_METHOD_SERIALIZED_ACCEPT</code> - is used to specify the default method (see the - <code>AcceptMutex</code> directive).</p> - - <p>Another solution that has been considered but never - implemented is to partially serialize the loop -- that is, let - in a certain number of processes. This would only be of - interest on multiprocessor boxes where it's possible multiple - children could run simultaneously, and the serialization - actually doesn't take advantage of the full bandwidth. This is - a possible area of future investigation, but priority remains + <p>If your system has another method of serialization which isn't in + the above list then it may be worthwhile adding code for it (and + submitting a patch back to Apache). The above + <code>HAVE_METHOD_SERIALIZED_ACCEPT</code> defines specify which method + is available and works on the platform (you can have more than one); + <code>USE_METHOD_SERIALIZED_ACCEPT</code> is used to specify the + default method (see the <code>AcceptMutex</code> directive).</p> + + <p>Another solution that has been considered but never implemented is + to partially serialize the loop -- that is, let in a certain number of + processes. This would only be of interest on multiprocessor boxes where + it's possible multiple children could run simultaneously, and the + serialization actually doesn't take advantage of the full bandwidth. + This is a possible area of future investigation, but priority remains low because highly parallel web servers are not the norm.</p> - <p>Ideally you should run servers without multiple - <code>Listen</code> statements if you want the highest - performance. But read on.</p> + <p>Ideally you should run servers without multiple <code>Listen</code> + statements if you want the highest performance. But read on.</p> <h4>accept Serialization - single socket</h4> - <p>The above is fine and dandy for multiple socket servers, but - what about single socket servers? In theory they shouldn't - experience any of these same problems because all children can - just block in <code>accept(2)</code> until a connection - arrives, and no starvation results. In practice this hides - almost the same "spinning" behavior discussed above in the - non-blocking solution. The way that most TCP stacks are - implemented, the kernel actually wakes up all processes blocked - in <code>accept</code> when a single connection arrives. One of - those processes gets the connection and returns to user-space, - the rest spin in the kernel and go back to sleep when they - discover there's no connection for them. This spinning is - hidden from the user-land code, but it's there nonetheless. - This can result in the same load-spiking wasteful behavior - that a non-blocking solution to the multiple sockets case - can.</p> - - <p>For this reason we have found that many architectures behave - more "nicely" if we serialize even the single socket case. So - this is actually the default in almost all cases. Crude - experiments under Linux (2.0.30 on a dual Pentium pro 166 - w/128Mb RAM) have shown that the serialization of the single - socket case causes less than a 3% decrease in requests per - second over unserialized single-socket. But unserialized - single-socket showed an extra 100ms latency on each request. - This latency is probably a wash on long haul lines, and only an - issue on LANs. If you want to override the single socket + <p>The above is fine and dandy for multiple socket servers, but what + about single socket servers? In theory they shouldn't experience any of + these same problems because all children can just block in + <code>accept(2)</code> until a connection arrives, and no starvation + results. In practice this hides almost the same "spinning" behavior + discussed above in the non-blocking solution. The way that most TCP + stacks are implemented, the kernel actually wakes up all processes + blocked in <code>accept</code> when a single connection arrives. One of + those processes gets the connection and returns to user-space, the rest + spin in the kernel and go back to sleep when they discover there's no + connection for them. This spinning is hidden from the user-land code, + but it's there nonetheless. This can result in the same load-spiking + wasteful behavior that a non-blocking solution to the multiple sockets + case can.</p> + + <p>For this reason we have found that many architectures behave more + "nicely" if we serialize even the single socket case. So this is + actually the default in almost all cases. Crude experiments under Linux + (2.0.30 on a dual Pentium pro 166 w/128Mb RAM) have shown that the + serialization of the single socket case causes less than a 3% decrease + in requests per second over unserialized single-socket. But + unserialized single-socket showed an extra 100ms latency on each + request. This latency is probably a wash on long haul lines, and only + an issue on LANs. If you want to override the single socket serialization you can define - <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> and then - single-socket servers will not serialize at all.</p> + <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> and then single-socket + servers will not serialize at all.</p> <h4>Lingering Close</h4> <p>As discussed in <a - href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt"> - draft-ietf-http-connection-00.txt</a> section 8, in order for - an HTTP server to <strong>reliably</strong> implement the - protocol it needs to shutdown each direction of the - communication independently (recall that a TCP connection is - bi-directional, each half is independent of the other). This - fact is often overlooked by other servers, but is correctly - implemented in Apache as of 1.2.</p> - - <p>When this feature was added to Apache it caused a flurry of - problems on various versions of Unix because of a - shortsightedness. The TCP specification does not state that the - FIN_WAIT_2 state has a timeout, but it doesn't prohibit it. On - systems without the timeout, Apache 1.2 induces many sockets - stuck forever in the FIN_WAIT_2 state. In many cases this can - be avoided by simply upgrading to the latest TCP/IP patches - supplied by the vendor. In cases where the vendor has never - released patches (<em>i.e.</em>, SunOS4 -- although folks with - a source license can patch it themselves) we have decided to - disable this feature.</p> - - <p>There are two ways of accomplishing this. One is the socket - option <code>SO_LINGER</code>. But as fate would have it, this - has never been implemented properly in most TCP/IP stacks. Even - on those stacks with a proper implementation (<em>i.e.</em>, - Linux 2.0.31) this method proves to be more expensive (cputime) - than the next solution.</p> - - <p>For the most part, Apache implements this in a function - called <code>lingering_close</code> (in - <code>http_main.c</code>). The function looks roughly like - this:</p> + href="http://ftp.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt"> + draft-ietf-http-connection-00.txt</a> section 8, in order for an HTTP + server to <strong>reliably</strong> implement the protocol it needs to + shutdown each direction of the communication independently (recall that + a TCP connection is bi-directional, each half is independent of the + other). This fact is often overlooked by other servers, but is + correctly implemented in Apache as of 1.2.</p> + + <p>When this feature was added to Apache it caused a flurry of problems + on various versions of Unix because of a shortsightedness. The TCP + specification does not state that the FIN_WAIT_2 state has a timeout, + but it doesn't prohibit it. On systems without the timeout, Apache 1.2 + induces many sockets stuck forever in the FIN_WAIT_2 state. In many + cases this can be avoided by simply upgrading to the latest TCP/IP + patches supplied by the vendor. In cases where the vendor has never + released patches (<em>i.e.</em>, SunOS4 -- although folks with a source + license can patch it themselves) we have decided to disable this + feature.</p> + + <p>There are two ways of accomplishing this. One is the socket option + <code>SO_LINGER</code>. But as fate would have it, this has never been + implemented properly in most TCP/IP stacks. Even on those stacks with a + proper implementation (<em>i.e.</em>, Linux 2.0.31) this method proves + to be more expensive (cputime) than the next solution.</p> + + <p>For the most part, Apache implements this in a function called + <code>lingering_close</code> (in <code>http_main.c</code>). The + function looks roughly like this:</p> <blockquote> <pre> @@ -595,51 +643,47 @@ DirectoryIndex index.cgi index.pl index.shtml index.html } </pre> </blockquote> - This naturally adds some expense at the end of a connection, - but it is required for a reliable implementation. As HTTP/1.1 - becomes more prevalent, and all connections are persistent, - this expense will be amortized over more requests. If you want - to play with fire and disable this feature you can define - <code>NO_LINGCLOSE</code>, but this is not recommended at all. - In particular, as HTTP/1.1 pipelined persistent connections - come into use <code>lingering_close</code> is an absolute + This naturally adds some expense at the end of a connection, but it is + required for a reliable implementation. As HTTP/1.1 becomes more + prevalent, and all connections are persistent, this expense will be + amortized over more requests. If you want to play with fire and disable + this feature you can define <code>NO_LINGCLOSE</code>, but this is not + recommended at all. In particular, as HTTP/1.1 pipelined persistent + connections come into use <code>lingering_close</code> is an absolute necessity (and <a - href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html"> - pipelined connections are faster</a>, so you want to support - them). + href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">pipelined + connections are faster</a>, so you want to support them). <h4>Scoreboard File</h4> - <p>Apache's parent and children communicate with each other - through something called the scoreboard. Ideally this should be - implemented in shared memory. For those operating systems that - we either have access to, or have been given detailed ports - for, it typically is implemented using shared memory. The rest - default to using an on-disk file. The on-disk file is not only - slow, but it is unreliable (and less featured). Peruse the - <code>src/main/conf.h</code> file for your architecture and - look for either <code>USE_MMAP_SCOREBOARD</code> or - <code>USE_SHMGET_SCOREBOARD</code>. Defining one of those two - (as well as their companions <code>HAVE_MMAP</code> and - <code>HAVE_SHMGET</code> respectively) enables the supplied - shared memory code. If your system has another type of shared - memory, edit the file <code>src/main/http_main.c</code> and add - the hooks necessary to use it in Apache. (Send us back a patch - too please.)</p> - - <p>Historical note: The Linux port of Apache didn't start to - use shared memory until version 1.2 of Apache. This oversight - resulted in really poor and unreliable behavior of earlier - versions of Apache on Linux.</p> + <p>Apache's parent and children communicate with each other through + something called the scoreboard. Ideally this should be implemented in + shared memory. For those operating systems that we either have access + to, or have been given detailed ports for, it typically is implemented + using shared memory. The rest default to using an on-disk file. The + on-disk file is not only slow, but it is unreliable (and less + featured). Peruse the <code>src/main/conf.h</code> file for your + architecture and look for either <code>USE_MMAP_SCOREBOARD</code> or + <code>USE_SHMGET_SCOREBOARD</code>. Defining one of those two (as well + as their companions <code>HAVE_MMAP</code> and <code>HAVE_SHMGET</code> + respectively) enables the supplied shared memory code. If your system + has another type of shared memory, edit the file + <code>src/main/http_main.c</code> and add the hooks necessary to use it + in Apache. (Send us back a patch too please.)</p> + + <p>Historical note: The Linux port of Apache didn't start to use shared + memory until version 1.2 of Apache. This oversight resulted in really + poor and unreliable behavior of earlier versions of Apache on + Linux.</p> <h4><code>DYNAMIC_MODULE_LIMIT</code></h4> - <p>If you have no intention of using dynamically loaded modules - (you probably don't if you're reading this and tuning your - server for every last ounce of performance) then you should add - <code>-DDYNAMIC_MODULE_LIMIT=0</code> when building your - server. This will save RAM that's allocated only for supporting - dynamically loaded modules.</p> + <p>If you have no intention of using dynamically loaded modules (you + probably don't if you're reading this and tuning your server for every + last ounce of performance) then you should add + <code>-DDYNAMIC_MODULE_LIMIT=0</code> when building your server. This + will save RAM that's allocated only for supporting dynamically loaded + modules.</p> <hr /> <h3><a id="trace" name="trace">Appendix: Detailed Analysis of a @@ -655,13 +699,12 @@ DirectoryIndex index.cgi index.pl index.shtml index.html </Directory> </pre> </blockquote> - The file being requested is a static 6K file of no particular - content. Traces of non-static requests or requests with content - negotiation look wildly different (and quite ugly in some - cases). First the entire trace, then we'll examine details. - (This was generated by the <code>strace</code> program, other - similar programs include <code>truss</code>, - <code>ktrace</code>, and <code>par</code>.) + The file being requested is a static 6K file of no particular content. + Traces of non-static requests or requests with content negotiation look + wildly different (and quite ugly in some cases). First the entire + trace, then we'll examine details. (This was generated by the + <code>strace</code> program, other similar programs include + <code>truss</code>, <code>ktrace</code>, and <code>par</code>.) <blockquote> <pre> @@ -703,8 +746,7 @@ flock(18, LOCK_EX) = 0 </pre> </blockquote> These two calls can be removed by defining - <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> as described - earlier. + <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> as described earlier. <p>Notice the <code>SIGUSR1</code> manipulation:</p> @@ -717,49 +759,46 @@ sigaction(SIGUSR1, {SIG_IGN}, {SIG_IGN}) = 0 sigaction(SIGUSR1, {0x8059954, [], SA_INTERRUPT}, {SIG_IGN}) = 0 </pre> </blockquote> - This is caused by the implementation of graceful restarts. When - the parent receives a <code>SIGUSR1</code> it sends a - <code>SIGUSR1</code> to all of its children (and it also - increments a "generation counter" in shared memory). Any - children that are idle (between connections) will immediately - die off when they receive the signal. Any children that are in - keep-alive connections, but are in between requests will die - off immediately. But any children that have a connection and - are still waiting for the first request will not die off - immediately. - - <p>To see why this is necessary, consider how a browser reacts - to a closed connection. If the connection was a keep-alive - connection and the request being serviced was not the first - request then the browser will quietly reissue the request on a - new connection. It has to do this because the server is always - free to close a keep-alive connection in between requests - (<em>i.e.</em>, due to a timeout or because of a maximum number - of requests). But, if the connection is closed before the first - response has been received the typical browser will display a - "document contains no data" dialogue (or a broken image icon). - This is done on the assumption that the server is broken in - some way (or maybe too overloaded to respond at all). So Apache - tries to avoid ever deliberately closing the connection before - it has sent a single response. This is the cause of those - <code>SIGUSR1</code> manipulations.</p> - - <p>Note that it is theoretically possible to eliminate all - three of these calls. But in rough tests the gain proved to be - almost unnoticeable.</p> - - <p>In order to implement virtual hosts, Apache needs to know - the local socket address used to accept the connection:</p> + This is caused by the implementation of graceful restarts. When the + parent receives a <code>SIGUSR1</code> it sends a <code>SIGUSR1</code> + to all of its children (and it also increments a "generation counter" + in shared memory). Any children that are idle (between connections) + will immediately die off when they receive the signal. Any children + that are in keep-alive connections, but are in between requests will + die off immediately. But any children that have a connection and are + still waiting for the first request will not die off immediately. + + <p>To see why this is necessary, consider how a browser reacts to a + closed connection. If the connection was a keep-alive connection and + the request being serviced was not the first request then the browser + will quietly reissue the request on a new connection. It has to do this + because the server is always free to close a keep-alive connection in + between requests (<em>i.e.</em>, due to a timeout or because of a + maximum number of requests). But, if the connection is closed before + the first response has been received the typical browser will display a + "document contains no data" dialogue (or a broken image icon). This is + done on the assumption that the server is broken in some way (or maybe + too overloaded to respond at all). So Apache tries to avoid ever + deliberately closing the connection before it has sent a single + response. This is the cause of those <code>SIGUSR1</code> + manipulations.</p> + + <p>Note that it is theoretically possible to eliminate all three of + these calls. But in rough tests the gain proved to be almost + unnoticeable.</p> + + <p>In order to implement virtual hosts, Apache needs to know the local + socket address used to accept the connection:</p> <blockquote> <pre> getsockname(3, {sin_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("127.0.0.1")}, [16]) = 0 </pre> </blockquote> - It is possible to eliminate this call in many situations (such - as when there are no virtual hosts, or when <code>Listen</code> - directives are used which do not have wildcard addresses). But - no effort has yet been made to do these optimizations. + It is possible to eliminate this call in many situations (such as when + there are no virtual hosts, or when <code>Listen</code> directives are + used which do not have wildcard addresses). But no effort has yet been + made to do these optimizations. <p>Apache turns off the Nagle algorithm:</p> @@ -769,8 +808,8 @@ setsockopt(3, IPPROTO_TCP1, [1], 4) = 0 </pre> </blockquote> because of problems described in <a - href="http://www.isi.edu/~johnh/PAPERS/Heidemann97a.html">a - paper by John Heidemann</a>. + href="http://www.isi.edu/~johnh/PAPERS/Heidemann97a.html">a paper by + John Heidemann</a>. <p>Notice the two <code>time</code> calls:</p> @@ -781,18 +820,17 @@ time(NULL) = 873959960 time(NULL) = 873959960 </pre> </blockquote> - One of these occurs at the beginning of the request, and the - other occurs as a result of writing the log. At least one of - these is required to properly implement the HTTP protocol. The - second occurs because the Common Log Format dictates that the - log record include a timestamp of the end of the request. A - custom logging module could eliminate one of the calls. Or you - can use a method which moves the time into shared memory, see - the <a href="#patches">patches section below</a>. - - <p>As described earlier, <code>ExtendedStatus On</code> causes - two <code>gettimeofday</code> calls and a call to - <code>times</code>:</p> + One of these occurs at the beginning of the request, and the other + occurs as a result of writing the log. At least one of these is + required to properly implement the HTTP protocol. The second occurs + because the Common Log Format dictates that the log record include a + timestamp of the end of the request. A custom logging module could + eliminate one of the calls. Or you can use a method which moves the + time into shared memory, see the <a href="#patches">patches section + below</a>. + + <p>As described earlier, <code>ExtendedStatus On</code> causes two + <code>gettimeofday</code> calls and a call to <code>times</code>:</p> <blockquote> <pre> @@ -802,8 +840,8 @@ gettimeofday({873959960, 417742}, NULL) = 0 times({tms_utime=5, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 446747 </pre> </blockquote> - These can be removed by setting <code>ExtendedStatus Off</code> - (which is the default). + These can be removed by setting <code>ExtendedStatus Off</code> (which + is the default). <p>It might seem odd to call <code>stat</code>:</p> @@ -813,21 +851,19 @@ stat("/home/dgaudet/ap/apachen/htdocs/6k", {st_mode=S_IFREG|0644, st_size=6144, </pre> </blockquote> This is part of the algorithm which calculates the - <code>PATH_INFO</code> for use by CGIs. In fact if the request - had been for the URI <code>/cgi-bin/printenv/foobar</code> then - there would be two calls to <code>stat</code>. The first for - <code>/home/dgaudet/ap/apachen/cgi-bin/printenv/foobar</code> - which does not exist, and the second for - <code>/home/dgaudet/ap/apachen/cgi-bin/printenv</code>, which - does exist. Regardless, at least one <code>stat</code> call is - necessary when serving static files because the file size and - modification times are used to generate HTTP headers (such as - <code>Content-Length</code>, <code>Last-Modified</code>) and - implement protocol features (such as - <code>If-Modified-Since</code>). A somewhat more clever server - could avoid the <code>stat</code> when serving non-static - files, however doing so in Apache is very difficult given the - modular structure. + <code>PATH_INFO</code> for use by CGIs. In fact if the request had been + for the URI <code>/cgi-bin/printenv/foobar</code> then there would be + two calls to <code>stat</code>. The first for + <code>/home/dgaudet/ap/apachen/cgi-bin/printenv/foobar</code> which + does not exist, and the second for + <code>/home/dgaudet/ap/apachen/cgi-bin/printenv</code>, which does + exist. Regardless, at least one <code>stat</code> call is necessary + when serving static files because the file size and modification times + are used to generate HTTP headers (such as <code>Content-Length</code>, + <code>Last-Modified</code>) and implement protocol features (such as + <code>If-Modified-Since</code>). A somewhat more clever server could + avoid the <code>stat</code> when serving non-static files, however + doing so in Apache is very difficult given the modular structure. <p>All static files are served using <code>mmap</code>:</p> @@ -838,48 +874,46 @@ mmap(0, 6144, PROT_READ, MAP_PRIVATE, 4, 0) = 0x400ee000 munmap(0x400ee000, 6144) = 0 </pre> </blockquote> - On some architectures it's slower to <code>mmap</code> small - files than it is to simply <code>read</code> them. The define - <code>MMAP_THRESHOLD</code> can be set to the minimum size - required before using <code>mmap</code>. By default it's set to - 0 (except on SunOS4 where experimentation has shown 8192 to be - a better value). Using a tool such as <a - href="http://www.bitmover.com/lmbench/">lmbench</a> you can - determine the optimal setting for your environment. - - <p>You may also wish to experiment with - <code>MMAP_SEGMENT_SIZE</code> (default 32768) which determines - the maximum number of bytes that will be written at a time from - mmap()d files. Apache only resets the client's - <code>Timeout</code> in between write()s. So setting this large - may lock out low bandwidth clients unless you also increase the + On some architectures it's slower to <code>mmap</code> small files than + it is to simply <code>read</code> them. The define + <code>MMAP_THRESHOLD</code> can be set to the minimum size required + before using <code>mmap</code>. By default it's set to 0 (except on + SunOS4 where experimentation has shown 8192 to be a better value). + Using a tool such as <a + href="http://www.bitmover.com/lmbench/">lmbench</a> you can determine + the optimal setting for your environment. + + <p>You may also wish to experiment with <code>MMAP_SEGMENT_SIZE</code> + (default 32768) which determines the maximum number of bytes that will + be written at a time from mmap()d files. Apache only resets the + client's <code>Timeout</code> in between write()s. So setting this + large may lock out low bandwidth clients unless you also increase the <code>Timeout</code>.</p> - <p>It may even be the case that <code>mmap</code> isn't used on - your architecture; if so then defining - <code>USE_MMAP_FILES</code> and <code>HAVE_MMAP</code> might - work (if it works then report back to us).</p> + <p>It may even be the case that <code>mmap</code> isn't used on your + architecture; if so then defining <code>USE_MMAP_FILES</code> and + <code>HAVE_MMAP</code> might work (if it works then report back to + us).</p> - <p>Apache does its best to avoid copying bytes around in - memory. The first write of any request typically is turned into - a <code>writev</code> which combines both the headers and the - first hunk of data:</p> + <p>Apache does its best to avoid copying bytes around in memory. The + first write of any request typically is turned into a + <code>writev</code> which combines both the headers and the first hunk + of data:</p> <blockquote> <pre> writev(3, [{"HTTP/1.1 200 OK\r\nDate: Thu, 11"..., 245}, {"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 6144}], 2) = 6389 </pre> </blockquote> - When doing HTTP/1.1 chunked encoding Apache will generate up to - four element <code>writev</code>s. The goal is to push the byte - copying into the kernel, where it typically has to happen - anyhow (to assemble network packets). On testing, various - Unixes (BSDI 2.x, Solaris 2.5, Linux 2.0.31+) properly combine - the elements into network packets. Pre-2.0.31 Linux will not - combine, and will create a packet for each element, so - upgrading is a good idea. Defining <code>NO_WRITEV</code> will - disable this combining, but result in very poor chunked - encoding performance. + When doing HTTP/1.1 chunked encoding Apache will generate up to four + element <code>writev</code>s. The goal is to push the byte copying into + the kernel, where it typically has to happen anyhow (to assemble + network packets). On testing, various Unixes (BSDI 2.x, Solaris 2.5, + Linux 2.0.31+) properly combine the elements into network packets. + Pre-2.0.31 Linux will not combine, and will create a packet for each + element, so upgrading is a good idea. Defining <code>NO_WRITEV</code> + will disable this combining, but result in very poor chunked encoding + performance. <p>The log write:</p> @@ -888,13 +922,12 @@ writev(3, [{"HTTP/1.1 200 OK\r\nDate: Thu, 11"..., 245}, {"\0\0\0\0\0\0\0\0\0\0\ write(17, "127.0.0.1 - - [10/Sep/1997:23:39"..., 71) = 71 </pre> </blockquote> - can be deferred by defining <code>BUFFERED_LOGS</code>. In this - case up to <code>PIPE_BUF</code> bytes (a POSIX defined - constant) of log entries are buffered before writing. At no - time does it split a log entry across a <code>PIPE_BUF</code> - boundary because those writes may not be atomic. - (<em>i.e.</em>, entries from multiple children could become - mixed together). The code does its best to flush this buffer + can be deferred by defining <code>BUFFERED_LOGS</code>. In this case up + to <code>PIPE_BUF</code> bytes (a POSIX defined constant) of log + entries are buffered before writing. At no time does it split a log + entry across a <code>PIPE_BUF</code> boundary because those writes may + not be atomic. (<em>i.e.</em>, entries from multiple children could + become mixed together). The code does its best to flush this buffer when a child dies. <p>The lingering close code causes four system calls:</p> @@ -910,9 +943,8 @@ close(3) = 0 which were described earlier. <p>Let's apply some of these optimizations: - <code>-DSINGLE_LISTEN_UNSERIALIZED_ACCEPT - -DBUFFERED_LOGS</code> and <code>ExtendedStatus Off</code>. - Here's the final trace:</p> + <code>-DSINGLE_LISTEN_UNSERIALIZED_ACCEPT -DBUFFERED_LOGS</code> and + <code>ExtendedStatus Off</code>. Here's the final trace:</p> <blockquote> <pre> @@ -937,91 +969,83 @@ sigaction(SIGUSR1, {0x8058c98, [], SA_INTERRUPT}, {SIG_IGN}) = 0 munmap(0x400e3000, 6144) = 0 </pre> </blockquote> - That's 19 system calls, of which 4 remain relatively easy to - remove, but don't seem worth the effort. - - <h3><a id="patches" name="patches">Appendix: Patches - Available</a></h3> - There are <a - href="http://www.arctic.org/~dgaudet/apache/1.3/">several - performance patches available for 1.3.</a> Although they may - not apply cleanly to the current version, it shouldn't be - difficult for someone with a little C knowledge to update them. - In particular: + That's 19 system calls, of which 4 remain relatively easy to remove, + but don't seem worth the effort. + + <h3><a id="patches" name="patches">Appendix: Patches Available</a></h3> + There are <a href="http://arctic.org/~dean/apache/1.3/">several + performance patches available for 1.3.</a> Although they may not apply + cleanly to the current version, it shouldn't be difficult for someone + with a little C knowledge to update them. In particular: <ul> <li>A <a - href="http://www.arctic.org/~dgaudet/apache/1.3/shared_time.patch"> - patch</a> to remove all <code>time(2)</code> system - calls.</li> + href="http://arctic.org/~dean/apache/1.3/shared_time.patch">patch</a> + to remove all <code>time(2)</code> system calls.</li> <li>A <a - href="http://www.arctic.org/~dgaudet/apache/1.3/mod_include_speedups.patch"> + href="http://arctic.org/~dean/apache/1.3/mod_include_speedups.patch"> patch</a> to remove various system calls from - <code>mod_include</code>, these calls are used by few sites - but required for backwards compatibility.</li> + <code>mod_include</code>, these calls are used by few sites but + required for backwards compatibility.</li> <li>A <a - href="http://www.arctic.org/~dgaudet/apache/1.3/top_fuel.patch"> - patch</a> which integrates the above two plus a few other - speedups at the cost of removing some functionality.</li> + href="http://arctic.org/~dean/apache/1.3/top_fuel.patch">patch</a> + which integrates the above two plus a few other speedups at the cost + of removing some functionality.</li> </ul> - <h3><a id="preforking" name="preforking">Appendix: The - Pre-Forking Model</a></h3> + <h3><a id="preforking" name="preforking">Appendix: The Pre-Forking + Model</a></h3> <p>Apache (on Unix) is a <em>pre-forking</em> model server. The - <em>parent</em> process is responsible only for forking - <em>child</em> processes, it does not serve any requests or - service any network sockets. The child processes actually - process connections, they serve multiple connections (one at a - time) before dying. The parent spawns new or kills off old - children in response to changes in the load on the server (it - does so by monitoring a scoreboard which the children keep up - to date).</p> - - <p>This model for servers offers a robustness that other models - do not. In particular, the parent code is very simple, and with - a high degree of confidence the parent will continue to do its - job without error. The children are complex, and when you add - in third party code via modules, you risk segmentation faults - and other forms of corruption. Even should such a thing happen, - it only affects one connection and the server continues serving - requests. The parent quickly replaces the dead child.</p> + <em>parent</em> process is responsible only for forking <em>child</em> + processes, it does not serve any requests or service any network + sockets. The child processes actually process connections, they serve + multiple connections (one at a time) before dying. The parent spawns + new or kills off old children in response to changes in the load on the + server (it does so by monitoring a scoreboard which the children keep + up to date).</p> + + <p>This model for servers offers a robustness that other models do not. + In particular, the parent code is very simple, and with a high degree + of confidence the parent will continue to do its job without error. The + children are complex, and when you add in third party code via modules, + you risk segmentation faults and other forms of corruption. Even should + such a thing happen, it only affects one connection and the server + continues serving requests. The parent quickly replaces the dead + child.</p> <p>Pre-forking is also very portable across dialects of Unix. Historically this has been an important goal for Apache, and it continues to remain so.</p> - <p>The pre-forking model comes under criticism for various - performance aspects. Of particular concern are the overhead of - forking a process, the overhead of context switches between - processes, and the memory overhead of having multiple - processes. Furthermore it does not offer as many opportunities - for data-caching between requests (such as a pool of - <code>mmapped</code> files). Various other models exist and - extensive analysis can be found in the <a - href="http://www.cs.wustl.edu/~jxh/research/research.html">papers - of the JAWS project</a>. In practice all of these costs vary - drastically depending on the operating system.</p> - - <p>Apache's core code is already multithread aware, and Apache - version 1.3 is multithreaded on NT. There have been at least - two other experimental implementations of threaded Apache, one - using the 1.3 code base on DCE, and one using a custom - user-level threads package and the 1.0 code base; neither is - publicly available. There is also an experimental port of - Apache 1.3 to <a - href="http://www.mozilla.org/docs/refList/refNSPR/">Netscape's - Portable Run Time</a>, which <a - href="http://www.arctic.org/~dgaudet/apache/2.0/">is - available</a> (but you're encouraged to join the <a - href="http://dev.apache.org/mailing-lists">new-httpd mailing - list</a> if you intend to use it). Part of our redesign for - version 2.0 of Apache will include abstractions of the server - model so that we can continue to support the pre-forking model, - and also support various threaded models. - <hr /> + <p>The pre-forking model comes under criticism for various performance + aspects. Of particular concern are the overhead of forking a process, + the overhead of context switches between processes, and the memory + overhead of having multiple processes. Furthermore it does not offer as + many opportunities for data-caching between requests (such as a pool of + <code>mmapped</code> files). Various other models exist and extensive + analysis can be found in the <a + href="http://www.cs.wustl.edu/~jxh/research/research.html">papers of + the JAWS project</a>. In practice all of these costs vary drastically + depending on the operating system.</p> + + <p>Apache's core code is already multithread aware, and Apache version + 1.3 is multithreaded on NT. There have been at least two other + experimental implementations of threaded Apache, one using the 1.3 code + base on DCE, and one using a custom user-level threads package and the + 1.0 code base; neither is publicly available. There is also an + experimental port of Apache 1.3 to <a + href="http://www.mozilla.org/docs/refList/refNSPR/">Netscape's Portable + Run Time</a>, which <a + href="http://arctic.org/~dean/apache/2.0/">is available</a> (but + you're encouraged to join the <a + href="http://httpd.apache.org/lists.html">new-httpd mailing list</a> + if you intend to use it). Part of our redesign for version 2.0 of + Apache includes abstractions of the server model so that we can + continue to support the pre-forking model, and also support various + threaded models. <hr /> <h3 align="CENTER">Apache HTTP Server Version 1.3</h3> <a href="./"><img src="../images/index.gif" alt="Index" /></a> diff --git a/usr.sbin/httpd/htdocs/manual/misc/perf.html b/usr.sbin/httpd/htdocs/manual/misc/perf.html index 24b345a1ba6..d7d7632439b 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/perf.html +++ b/usr.sbin/httpd/htdocs/manual/misc/perf.html @@ -69,48 +69,7 @@ <ul> <li><a - href="http://www.digital.com/info/internet/document/ias/tuning.html"> - DIGITAL UNIX Tuning Parameters for Web Servers</a></li> - - <li>We have some <a href="perf-dec.html">newsgroup - postings</a> on how to tune Digital UNIX 3.2 and 4.0.</li> - </ul> - <hr /> - - <h3><a id="irix" name="irix">IRIX</a></h3> - - <p>An SGI document covering tuning of IRIX 6.2 through 6.5 is - available from <a - href="http://gea.stanford.edu/SGI_tuning/">Stanford</a>.</p> - - <hr /> - - <h3><a id="Linux" name="Linux">Linux</a></h3> - There are no known problems with heavily loaded systems running - Linux kernels 2.0.32 or later. Earlier kernels have some - problems, and an upgrade to the latest 2.0.x is a good idea to - eliminate various security and denial of service attacks. - <hr /> - - - <h3><a id="Solaris" name="Solaris">Solaris 2.4</a></h3> - The Solaris 2.4 TCP implementation has a few inherent - limitations that only became apparent under heavy loads. This - has been fixed to some extent in 2.5 (and completely revamped - in 2.6), but for now consult the following URL for tips on how - to expand the capabilities if you are finding slowdowns and - lags are hurting performance. - - <p>Other links:</p> - - <ul> - <li><a - href="http://www.sun.com/sun-on-net/performance.html">World - Wide Web Server Performance, - <http://www.sun.com/sun-on-net/performance.html></a></li> - - <li><a - href="http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html"> + href="http://www.sean.de/Solaris/tune.html"> Solaris 2.x - tuning your TCP/IP stack</a> contains some good technical information about tuning various Solaris TCP/IP parameters.</li> @@ -177,7 +136,7 @@ <h3>More welcome!</h3> If you have tips to contribute, please submit them to - the <a href="http://www.apache.org/bug_report.html">Apache Bug + the <a href="http://bugs.apache.org/">Apache Bug Database</a>. <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html b/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html index 345a9188bc2..403eda88a41 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html +++ b/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html @@ -1038,7 +1038,7 @@ RewriteRule ^(.*)$ $1.html <dt><strong>Description:</strong></dt> <dd>Assume we have recently renamed the page - <code>bar.html</code> to <code>foo.html</code> and now want + <code>foo.html</code> to <code>bar.html</code> and now want to provide the old URL for backward compatibility. Actually we want that users of the old URL even not recognize that the pages was renamed.</dd> @@ -1070,7 +1070,7 @@ RewriteRule ^<strong>foo</strong>\.html$ <strong>bar</strong>.html <dt><strong>Description:</strong></dt> <dd>Assume again that we have recently renamed the page - <code>bar.html</code> to <code>foo.html</code> and now want + <code>foo.html</code> to <code>bar.html</code> and now want to provide the old URL for backward compatibility. But this time we want that the users of the old URL get hinted to the new one, i.e. their browsers Location field should @@ -1461,133 +1461,6 @@ while (<STDIN>) { </dd> </dl> - <h2>Reverse Proxy</h2> - - <dl> - <dt><strong>Description:</strong></dt> - - <dd>...</dd> - - <dt><strong>Solution:</strong></dt> - - <dd> - <table bgcolor="#E0E5F5" border="0" cellspacing="0" - cellpadding="5"> - <tr> - <td> -<pre> -## -## apache-rproxy.conf -- Apache configuration for Reverse Proxy Usage -## - -# server type -ServerType standalone -Port 8000 -MinSpareServers 16 -StartServers 16 -MaxSpareServers 16 -MaxClients 16 -MaxRequestsPerChild 100 - -# server operation parameters -KeepAlive on -MaxKeepAliveRequests 100 -KeepAliveTimeout 15 -Timeout 400 -IdentityCheck off -HostnameLookups off - -# paths to runtime files -PidFile /path/to/apache-rproxy.pid -LockFile /path/to/apache-rproxy.lock -ErrorLog /path/to/apache-rproxy.elog -CustomLog /path/to/apache-rproxy.dlog "%{%v/%T}t %h -> %{SERVER}e URL: %U" - -# unused paths -ServerRoot /tmp -DocumentRoot /tmp -CacheRoot /tmp -RewriteLog /dev/null -TransferLog /dev/null -TypesConfig /dev/null -AccessConfig /dev/null -ResourceConfig /dev/null - -# speed up and secure processing -<Directory /> -Options -FollowSymLinks -SymLinksIfOwnerMatch -AllowOverride None -</Directory> - -# the status page for monitoring the reverse proxy -<Location /apache-rproxy-status> -SetHandler server-status -</Location> - -# enable the URL rewriting engine -RewriteEngine on -RewriteLogLevel 0 - -# define a rewriting map with value-lists where -# mod_rewrite randomly chooses a particular value -RewriteMap server rnd:/path/to/apache-rproxy.conf-servers - -# make sure the status page is handled locally -# and make sure no one uses our proxy except ourself -RewriteRule ^/apache-rproxy-status.* - [L] -RewriteRule ^(http|ftp)://.* - [F] - -# now choose the possible servers for particular URL types -RewriteRule ^/(.*\.(cgi|shtml))$ to://${server:dynamic}/$1 [S=1] -RewriteRule ^/(.*)$ to://${server:static}/$1 - -# and delegate the generated URL by passing it -# through the proxy module -RewriteRule ^to://([^/]+)/(.*) http://$1/$2 [E=SERVER:$1,P,L] - -# and make really sure all other stuff is forbidden -# when it should survive the above rules... -RewriteRule .* - [F] - -# enable the Proxy module without caching -ProxyRequests on -NoCache * - -# setup URL reverse mapping for redirect reponses -ProxyPassReverse / http://www1.foo.dom/ -ProxyPassReverse / http://www2.foo.dom/ -ProxyPassReverse / http://www3.foo.dom/ -ProxyPassReverse / http://www4.foo.dom/ -ProxyPassReverse / http://www5.foo.dom/ -ProxyPassReverse / http://www6.foo.dom/ -</pre> - </td> - </tr> - </table> - - <table bgcolor="#E0E5F5" border="0" cellspacing="0" - cellpadding="5"> - <tr> - <td> -<pre> -## -## apache-rproxy.conf-servers -- Apache/mod_rewrite selection table -## - -# list of backend servers which serve static -# pages (HTML files and Images, etc.) -static www1.foo.dom|www2.foo.dom|www3.foo.dom|www4.foo.dom - -# list of backend servers which serve dynamically -# generated page (CGI programs or mod_perl scripts) -dynamic www5.foo.dom|www6.foo.dom -</pre> - </td> - </tr> - </table> - </dd> - </dl> - <h2>New MIME-type, New Service</h2> <dl> diff --git a/usr.sbin/httpd/htdocs/manual/misc/security_tips.html b/usr.sbin/httpd/htdocs/manual/misc/security_tips.html index 3387a66dc00..12ff7b27e4a 100644 --- a/usr.sbin/httpd/htdocs/manual/misc/security_tips.html +++ b/usr.sbin/httpd/htdocs/manual/misc/security_tips.html @@ -32,6 +32,8 @@ <li><a href="#cgi">CGI in General</a></li> + <li><a href="#dynamic">Other sources of dynamic content</a></li> + <li><a href="#systemsettings">Protecting System Settings</a></li> @@ -54,8 +56,8 @@ directive to serve hits. As is the case with any command that root executes, you must take care that it is protected from modification by non-root users. Not only must the files - themselves be writable only by root, but so must the - directories, and parents of all directories. For example, if + themselves be writeable only by root, but also the + directories and parents of all directories. For example, if you choose to place ServerRoot in <code>/usr/local/apache</code> then it is suggested that you create that directory as root, with commands like these:</p> @@ -91,11 +93,11 @@ either executes or writes on then you open your system to root compromises. For example, someone could replace the httpd binary so that the next time you start it, it will execute some - arbitrary code. If the logs directory is writable (by a + arbitrary code. If the logs directory is writeable (by a non-root user), someone could replace a log file with a symlink to some other system file, and then root might overwrite that file with arbitrary data. If the log files themselves are - writable (by a non-root user), then someone may be able to + writeable (by a non-root user), then someone may be able to overwrite the log itself with bogus data.</p> <hr /> @@ -133,13 +135,13 @@ of risk.</p> <p>Another solution is to disable the ability to run scripts - and programs from SSI pages. To do this replace + and programs from SSI pages. To do this, replace <code>Includes</code> with <code>IncludesNOEXEC</code> in the <a href="../mod/core.html#options">Options</a> directive. Note that users may still use <--#include virtual="..." --> to execute CGI scripts if these scripts are in directories - desginated by a <a - href="../mod/mod_alias.html#ScriptAlias">ScriptAlias</a> + designated by a <a + href="../mod/mod_alias.html#scriptalias">ScriptAlias</a> directive.</p> <hr /> @@ -194,6 +196,18 @@ href="http://wwwcgi.umr.edu/~cgiwrap/">CGIWrap</a>.</p> <hr /> + <h2><a id="dynamic" name="dynamic">Other sources of dynamic + content</a></h2> + +<p>Embedded scripting options which run as part of the server itself, such +as mod_php, mod_perl, mod_tcl, and mod_python, run under the identity of +the server itself (see the <a href="../mod/core.html#user">User</a> +directive), and therefore scripts executed by these engines +potentially can access anything the server user can. Some scripting +engines may provide restrictions, but it is better to be safe and assume +not.</p> +<hr /> + <h2><a id="systemsettings" name="systemsettings">Protecting System Settings</a></h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/core.html.en b/usr.sbin/httpd/htdocs/manual/mod/core.html.en index c146201e064..448f4788494 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/core.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/core.html.en @@ -18,7 +18,7 @@ </div> - <h1 align="CENTER">Apache Core Features</h1> + <h1 align="center">Apache Core Features</h1> <p>These configuration parameters control the core Apache features, and are always available.</p> @@ -48,6 +48,8 @@ <li><a href="#bs2000account">BS2000Account</a></li> + <li><a href="#cgicommandargs">CGICommandArgs</a></li> + <li><a href="#clearmodulelist">ClearModuleList</a></li> <li><a href="#contentdigest">ContentDigest</a></li> @@ -99,6 +101,8 @@ <li><a href="#limitexcept"><LimitExcept></a></li> + <li><a href="#limitinternalrecursion">LimitInternalRecursion</a></li> + <li><a href="#limitrequestbody">LimitRequestBody</a></li> <li><a href="#limitrequestfields">LimitRequestFields</a></li> @@ -250,7 +254,7 @@ method Apache will use. Not all methods are available on all platforms, since the suite of methods is determined at compile-time. For a list of which methods are available for - your particular build, the <code>httpd -L</code> command line + your particular build, the <code>httpd -V</code> command line option will list them out.</p> <p>The compile time flags <code>-D @@ -315,10 +319,10 @@ <p>Alternatively you can use a wildcard to limit the scope; i.e to only *.conf files. </p> - <p>Note that by default <emph>any</emph> file in the specified + <p>Note that by default <em>any</em> file in the specified directory will be loaded as a configuration file. - <p> </p> + <p> So make sure that you don't have stray files in this directory by mistake, such as temporary files created by your editor, for example.</p> @@ -436,8 +440,18 @@ <code>AddModule mod_include.c</code> </blockquote> + <p>The ordering of <code>AddModule</code> lines is important. + Modules are listed in reverse priority order --- the ones that come + later can override the behavior of those that come earlier. This + can have visible effects; for instance, if UserDir followed Alias, + you couldn't alias out a particular user's home directory. For + more information and a recommended ordering, see + <code>src/Configuration.tmpl</code> in the Apache source + distribution.</p> + <p><strong>See also</strong>: <a - href="#clearmodulelist">ClearModuleList</a>, + href="#clearmodulelist">ClearModuleList</a> and <a + href="mod_so.html#loadmodule">LoadModule</a></p> <hr /> <h2><a id="allowoverride" name="allowoverride">AllowOverride @@ -460,6 +474,11 @@ which directives declared in that file can override earlier access information.</p> + <p><strong>Note:</strong> <code>AllowOverride</code> is only + valid in <Directory> sections, not in <Location> or + <Files> sections, as implied by the <strong>Context</strong> + section above.</p> + <p>When this directive is set to <code>None</code>, then .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the @@ -688,6 +707,39 @@ EBCDIC port</a></p> <hr /> + <h2><a id="cgicommandargs" name="cgicommandargs">CGICommandArgs + directive</a></h2> + + <a href="directive-dict.html#Syntax" + rel="Help"><strong>Syntax:</strong></a> CGICommandArgs On|Off<br /> + <a href="directive-dict.html#Default" + rel="Help"><strong>Default:</strong></a> CGICommandArgs On<br /> + <a href="directive-dict.html#Context" + rel="Help"><strong>Context:</strong></a> directory, .htaccess<br /> + <a href="directive-dict.html#Override" + rel="Help"><strong>Override:</strong></a> Options<br /> + <a href="directive-dict.html#Status" + rel="Help"><strong>Status:</strong></a> core<br /> + <a href="directive-dict.html#Compatibility" + rel="Help"><strong>Compatibility:</strong></a> Available in Apache + 1.3.24 and later. + + <p>Way back when the internet was a safer, more naive place, it + was convenient for the server to take a query string that did not + contain an '=' sign and to parse and pass it to a CGI program as + command line args. For example, <code><IsIndex></code> + generated searches often work in this way. The default behavior + in Apache is to maintain this behavior for backwards + compatibility, although it is generally regarded as unsafe + practice today. Most CGI programs do not take command line + parameters, but among those that do, many are unaware of this + method of passing arguments and are therefore vulnerable to + malicious clients passing unsafe material in this way. Setting + <code>CGICommandArgs Off</code> is recommended to protect such + scripts with little loss in functionality.</p> + + <hr /> + <h2><a id="clearmodulelist" name="clearmodulelist">ClearModuleList directive</a></h2> @@ -705,6 +757,11 @@ This directive clears the list. It is assumed that the list will then be re-populated using the <a href="#addmodule">AddModule</a> directive.</p> + + <p><strong>See also</strong>: <a + href="#addmodule">AddModule</a> and <a + href="mod_so.html#loadmodule">LoadModule</a></p> + <hr /> <h2><a id="contentdigest" name="contentdigest">ContentDigest @@ -840,7 +897,7 @@ <em>Directory-path</em> is either the full path to a directory, or a wild-card string. In a wild-card string, `?' matches any single character, and `*' matches any sequences of characters. - As of Apache 1.3, you may also use `[]' character ranges like + As of Apache 1.3, you may also use `[ ]' character ranges like in the shell. Also as of Apache 1.3 none of the wildcards match a `/' character, which more closely mimics the behavior of Unix shells. Example:</p> @@ -1310,8 +1367,11 @@ <p>Examples</p> - <code>ErrorLog logs/vhost1.error</code><br /> - <code>ErrorLog |/usr/local/bin/errorlog.pl</code> + <p><code>ErrorLog logs/vhost1.error</code></p> + + or + + <p><code>ErrorLog |/usr/local/bin/errorlog.pl</code></p> <p><strong>Apache 1.3 and above:</strong> Using <code>syslog</code> instead of a filename enables logging via @@ -1323,7 +1383,11 @@ <p>For example:</p> - <code>ErrorLog syslog</code> + <p><code>ErrorLog syslog</code></p> + + or + + <p><code>ErrorLog syslog:user</code></p> <p>SECURITY: See the <a href="../misc/security_tips.html#serverroot">security tips</a> @@ -1358,7 +1422,7 @@ bandwidth.) In Apache 1.3.22 and earlier, the ETag value was <i>always</i> formed from the file's inode, size, and last-modified time (mtime). The FileETag directive allows you to choose - which of these -- if any -- should be used. The recognised + which of these -- if any -- should be used. The recognized keywords are: </p> <dl compact="compact"> @@ -1451,7 +1515,7 @@ subdirectories, unless specifically overridden.</p> <p>(See <a href="#require">Require</a> for details on using the - <code>Require</code> directive</a>)</p> + <code>Require</code> directive)</p> <p><strong>See also</strong>: <a href="../sections.html">How Directory, Location and Files sections work</a> for an @@ -1516,9 +1580,13 @@ <dd>Refers to a group by its number.</dd> </dl> - It is recommended that you set up a new group specifically for + <p>It is recommended that you set up a new group specifically for running the server. Some admins use user <code>nobody</code>, - but this is not always possible or desirable. + but this is not always possible or desirable.</p> + + <p>Example:</p> + + <code>Group www-group</code> <p>Note: if you start the server as a non-root user, it will fail to change to the specified group, and will instead @@ -1772,7 +1840,7 @@ directives, which may cause the server to fail on start up. Running <code>apachectl configtest</code> will give you a list of the files that are being processed during the configuration - check:<p> + check:</p> <pre> root@host# apachectl configtest @@ -1896,10 +1964,10 @@ Syntax OK </Limit></code> </blockquote> The method names listed can be one or more of: GET, POST, PUT, - DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, + DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK. <strong>The method name is case-sensitive.</strong> If GET is used it will also restrict - HEAD requests. + HEAD requests. The TRACE method cannot be limited. <hr /> <h2><a id="limitexcept" name="limitexcept"><LimitExcept> @@ -1936,6 +2004,50 @@ Syntax OK <hr /> + <h2><a id="limitinternalrecursion" + name="limitinternalrecursion">LimitInternalRecursion directive</a></h2> + + <a href="directive-dict.html#Syntax" + rel="Help"><strong>Syntax:</strong></a> LimitInternalRecursion + <em>number</em> [<em>number</em>]<br /> + <a href="directive-dict.html#Default" + rel="Help"><strong>Default:</strong></a> <code>LimitInternalRecursion + 20</code><br /> + <a href="directive-dict.html#Context" + rel="Help"><strong>Context:</strong></a> server config, virtual host<br /> + <a href="directive-dict.html#Status" + rel="Help"><strong>Status:</strong></a> core<br /> + <a href="directive-dict.html#Compatibility" + rel="Help"><strong>Compatibility:</strong></a> LimitInternalRecursion + is only available in Apache 1.3.28 and later. + + <p>An internal redirect happens, for example, when using the <a + href="mod_actions.html#action">Action</a> directive, which internally + redirects the original request to a CGI script. A subrequest is Apache's + mechanism to find out what would happen for some URI if it were requested. + For example, <a href="mod_dir.html">mod_dir</a> uses subrequests to look + for the files listed in the <a + href="mod_dir.html#directoryindex">DirectoryIndex</a> + directive.</p> + + <p><code>LimitInternalRecursion</code> prevents the server + from crashing when entering an infinite loop of internal redirects or + subrequests. Such loops are usually caused by misconfigurations.</p> + + <p>The directive stores two different limits, which are evaluated on + per-request basis. The first <em>number</em> is the maximum number of + internal redirects, that may follow each other. The second <em>number</em> + determines, how deep subrequests may be nested. If you specify only one + <em>number</em>, it will be assigned to both limits. A value of + <code>0</code> means "unlimited".</p> + + <p><strong>Example</strong></p> + <pre> + LimitInternalRecursion 5 + </pre> + + <hr /> + <h2><a id="limitrequestbody" name="limitrequestbody">LimitRequestBody directive</a></h2> @@ -2386,10 +2498,10 @@ Syntax OK <table> <tr> - <th align="LEFT"><strong>Level</strong> </th> + <th align="left"><strong>Level</strong> </th> - <th align="LEFT"><strong>Description</strong> </th> - <th align="LEFT"><strong>Example</strong> </th> + <th align="left"><strong>Description</strong> </th> + <th align="left"><strong>Example</strong> </th> </tr> <tr> @@ -2966,13 +3078,13 @@ Syntax OK rel="Help"><strong>Status:</strong></a> core <p>This directive selects which authenticated users can access - a directory. The allowed syntaxes are:</p> + a resource. The allowed syntaxes are:</p> <ul> <li> Require user <em>userid</em> [<em>userid</em>] ... - <p>Only the named users can access the directory.</p> + <p>Only the named users can access the resource.</p> </li> <li> @@ -2980,13 +3092,23 @@ Syntax OK <p>Only users in the named groups can access the - directory.</p> + resource.</p> </li> <li> Require valid-user - <p>All valid users can access the directory.</p> + <p>All valid users can access the resource.</p> + </li> + <li>file-owner + <p>Only the user, whose name matches the system's name for + the file owner, can access the resource.<br> + [Available after Apache 1.3.20]</p> + </li> + <li>file-group + <p>Only the members of the group, whose name matches the + system's name of the file owner group, can access the + resource.<br>[Available after Apache 1.3.20]</p> </li> </ul> @@ -3064,15 +3186,13 @@ Syntax OK <p>Alternatively you can use a wildcard to limit the scope; i.e to only *.conf files. </p> - <p>Note that by default <emph>any</emph> file in the specified + <p>Note that by default <em>any</em> file in the specified directory will be loaded as a configuration file. - <p> </p> - So make sure that you don't have stray files in + <p>So make sure that you don't have stray files in this directory by mistake, such as temporary files created by your editor, for example.</p> - <p>See also <a href="#accessconfig">AccessConfig</a>.</p> <hr /> @@ -3779,7 +3899,7 @@ Syntax OK <code>9090</code>, then the <em>canonical name</em> of the server is <code>www.example.com:9090</code>. In the event that <code>Port</code> has its default value of <code>80</code>, the - <code>:80</code> is ommitted from the <em>canonical name</em>. + <code>:80</code> is omitted from the <em>canonical name</em>.</p> <p>With <code>UseCanonicalName off</code> Apache will form self-referential URLs using the hostname and port supplied by diff --git a/usr.sbin/httpd/htdocs/manual/mod/core.html.html b/usr.sbin/httpd/htdocs/manual/mod/core.html.html index 34ec33b29de..01ca807474a 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/core.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/core.html.html @@ -20,7 +20,7 @@ </div> - <h1 align="CENTER">Apache Core Features</h1> + <h1 align="center">Apache Core Features</h1> <p>These configuration parameters control the core Apache features, and are always available.</p> @@ -50,6 +50,8 @@ <li><a href="#bs2000account">BS2000Account</a></li> + <li><a href="#cgicommandargs">CGICommandArgs</a></li> + <li><a href="#clearmodulelist">ClearModuleList</a></li> <li><a href="#contentdigest">ContentDigest</a></li> @@ -101,6 +103,8 @@ <li><a href="#limitexcept"><LimitExcept></a></li> + <li><a href="#limitinternalrecursion">LimitInternalRecursion</a></li> + <li><a href="#limitrequestbody">LimitRequestBody</a></li> <li><a href="#limitrequestfields">LimitRequestFields</a></li> @@ -252,7 +256,7 @@ method Apache will use. Not all methods are available on all platforms, since the suite of methods is determined at compile-time. For a list of which methods are available for - your particular build, the <code>httpd -L</code> command line + your particular build, the <code>httpd -V</code> command line option will list them out.</p> <p>The compile time flags <code>-D @@ -317,10 +321,10 @@ <p>Alternatively you can use a wildcard to limit the scope; i.e to only *.conf files. </p> - <p>Note that by default <emph>any</emph> file in the specified + <p>Note that by default <em>any</em> file in the specified directory will be loaded as a configuration file. - <p> </p> + <p> So make sure that you don't have stray files in this directory by mistake, such as temporary files created by your editor, for example.</p> @@ -438,8 +442,18 @@ <code>AddModule mod_include.c</code> </blockquote> + <p>The ordering of <code>AddModule</code> lines is important. + Modules are listed in reverse priority order --- the ones that come + later can override the behavior of those that come earlier. This + can have visible effects; for instance, if UserDir followed Alias, + you couldn't alias out a particular user's home directory. For + more information and a recommended ordering, see + <code>src/Configuration.tmpl</code> in the Apache source + distribution.</p> + <p><strong>See also</strong>: <a - href="#clearmodulelist">ClearModuleList</a>, + href="#clearmodulelist">ClearModuleList</a> and <a + href="mod_so.html#loadmodule">LoadModule</a></p> <hr /> <h2><a id="allowoverride" name="allowoverride">AllowOverride @@ -462,6 +476,11 @@ which directives declared in that file can override earlier access information.</p> + <p><strong>Note:</strong> <code>AllowOverride</code> is only + valid in <Directory> sections, not in <Location> or + <Files> sections, as implied by the <strong>Context</strong> + section above.</p> + <p>When this directive is set to <code>None</code>, then .htaccess files are completely ignored. In this case, the server will not even attempt to read .htaccess files in the @@ -690,6 +709,39 @@ EBCDIC port</a></p> <hr /> + <h2><a id="cgicommandargs" name="cgicommandargs">CGICommandArgs + directive</a></h2> + + <a href="directive-dict.html#Syntax" + rel="Help"><strong>Syntax:</strong></a> CGICommandArgs On|Off<br /> + <a href="directive-dict.html#Default" + rel="Help"><strong>Default:</strong></a> CGICommandArgs On<br /> + <a href="directive-dict.html#Context" + rel="Help"><strong>Context:</strong></a> directory, .htaccess<br /> + <a href="directive-dict.html#Override" + rel="Help"><strong>Override:</strong></a> Options<br /> + <a href="directive-dict.html#Status" + rel="Help"><strong>Status:</strong></a> core<br /> + <a href="directive-dict.html#Compatibility" + rel="Help"><strong>Compatibility:</strong></a> Available in Apache + 1.3.24 and later. + + <p>Way back when the internet was a safer, more naive place, it + was convenient for the server to take a query string that did not + contain an '=' sign and to parse and pass it to a CGI program as + command line args. For example, <code><IsIndex></code> + generated searches often work in this way. The default behavior + in Apache is to maintain this behavior for backwards + compatibility, although it is generally regarded as unsafe + practice today. Most CGI programs do not take command line + parameters, but among those that do, many are unaware of this + method of passing arguments and are therefore vulnerable to + malicious clients passing unsafe material in this way. Setting + <code>CGICommandArgs Off</code> is recommended to protect such + scripts with little loss in functionality.</p> + + <hr /> + <h2><a id="clearmodulelist" name="clearmodulelist">ClearModuleList directive</a></h2> @@ -707,6 +759,11 @@ This directive clears the list. It is assumed that the list will then be re-populated using the <a href="#addmodule">AddModule</a> directive.</p> + + <p><strong>See also</strong>: <a + href="#addmodule">AddModule</a> and <a + href="mod_so.html#loadmodule">LoadModule</a></p> + <hr /> <h2><a id="contentdigest" name="contentdigest">ContentDigest @@ -842,7 +899,7 @@ <em>Directory-path</em> is either the full path to a directory, or a wild-card string. In a wild-card string, `?' matches any single character, and `*' matches any sequences of characters. - As of Apache 1.3, you may also use `[]' character ranges like + As of Apache 1.3, you may also use `[ ]' character ranges like in the shell. Also as of Apache 1.3 none of the wildcards match a `/' character, which more closely mimics the behavior of Unix shells. Example:</p> @@ -1312,8 +1369,11 @@ <p>Examples</p> - <code>ErrorLog logs/vhost1.error</code><br /> - <code>ErrorLog |/usr/local/bin/errorlog.pl</code> + <p><code>ErrorLog logs/vhost1.error</code></p> + + or + + <p><code>ErrorLog |/usr/local/bin/errorlog.pl</code></p> <p><strong>Apache 1.3 and above:</strong> Using <code>syslog</code> instead of a filename enables logging via @@ -1325,7 +1385,11 @@ <p>For example:</p> - <code>ErrorLog syslog</code> + <p><code>ErrorLog syslog</code></p> + + or + + <p><code>ErrorLog syslog:user</code></p> <p>SECURITY: See the <a href="../misc/security_tips.html#serverroot">security tips</a> @@ -1360,7 +1424,7 @@ bandwidth.) In Apache 1.3.22 and earlier, the ETag value was <i>always</i> formed from the file's inode, size, and last-modified time (mtime). The FileETag directive allows you to choose - which of these -- if any -- should be used. The recognised + which of these -- if any -- should be used. The recognized keywords are: </p> <dl compact="compact"> @@ -1453,7 +1517,7 @@ subdirectories, unless specifically overridden.</p> <p>(See <a href="#require">Require</a> for details on using the - <code>Require</code> directive</a>)</p> + <code>Require</code> directive)</p> <p><strong>See also</strong>: <a href="../sections.html">How Directory, Location and Files sections work</a> for an @@ -1518,9 +1582,13 @@ <dd>Refers to a group by its number.</dd> </dl> - It is recommended that you set up a new group specifically for + <p>It is recommended that you set up a new group specifically for running the server. Some admins use user <code>nobody</code>, - but this is not always possible or desirable. + but this is not always possible or desirable.</p> + + <p>Example:</p> + + <code>Group www-group</code> <p>Note: if you start the server as a non-root user, it will fail to change to the specified group, and will instead @@ -1774,7 +1842,7 @@ directives, which may cause the server to fail on start up. Running <code>apachectl configtest</code> will give you a list of the files that are being processed during the configuration - check:<p> + check:</p> <pre> root@host# apachectl configtest @@ -1898,10 +1966,10 @@ Syntax OK </Limit></code> </blockquote> The method names listed can be one or more of: GET, POST, PUT, - DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, + DELETE, CONNECT, OPTIONS, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK. <strong>The method name is case-sensitive.</strong> If GET is used it will also restrict - HEAD requests. + HEAD requests. The TRACE method cannot be limited. <hr /> <h2><a id="limitexcept" name="limitexcept"><LimitExcept> @@ -1938,6 +2006,50 @@ Syntax OK <hr /> + <h2><a id="limitinternalrecursion" + name="limitinternalrecursion">LimitInternalRecursion directive</a></h2> + + <a href="directive-dict.html#Syntax" + rel="Help"><strong>Syntax:</strong></a> LimitInternalRecursion + <em>number</em> [<em>number</em>]<br /> + <a href="directive-dict.html#Default" + rel="Help"><strong>Default:</strong></a> <code>LimitInternalRecursion + 20</code><br /> + <a href="directive-dict.html#Context" + rel="Help"><strong>Context:</strong></a> server config, virtual host<br /> + <a href="directive-dict.html#Status" + rel="Help"><strong>Status:</strong></a> core<br /> + <a href="directive-dict.html#Compatibility" + rel="Help"><strong>Compatibility:</strong></a> LimitInternalRecursion + is only available in Apache 1.3.28 and later. + + <p>An internal redirect happens, for example, when using the <a + href="mod_actions.html#action">Action</a> directive, which internally + redirects the original request to a CGI script. A subrequest is Apache's + mechanism to find out what would happen for some URI if it were requested. + For example, <a href="mod_dir.html">mod_dir</a> uses subrequests to look + for the files listed in the <a + href="mod_dir.html#directoryindex">DirectoryIndex</a> + directive.</p> + + <p><code>LimitInternalRecursion</code> prevents the server + from crashing when entering an infinite loop of internal redirects or + subrequests. Such loops are usually caused by misconfigurations.</p> + + <p>The directive stores two different limits, which are evaluated on + per-request basis. The first <em>number</em> is the maximum number of + internal redirects, that may follow each other. The second <em>number</em> + determines, how deep subrequests may be nested. If you specify only one + <em>number</em>, it will be assigned to both limits. A value of + <code>0</code> means "unlimited".</p> + + <p><strong>Example</strong></p> + <pre> + LimitInternalRecursion 5 + </pre> + + <hr /> + <h2><a id="limitrequestbody" name="limitrequestbody">LimitRequestBody directive</a></h2> @@ -2388,10 +2500,10 @@ Syntax OK <table> <tr> - <th align="LEFT"><strong>Level</strong> </th> + <th align="left"><strong>Level</strong> </th> - <th align="LEFT"><strong>Description</strong> </th> - <th align="LEFT"><strong>Example</strong> </th> + <th align="left"><strong>Description</strong> </th> + <th align="left"><strong>Example</strong> </th> </tr> <tr> @@ -2968,13 +3080,13 @@ Syntax OK rel="Help"><strong>Status:</strong></a> core <p>This directive selects which authenticated users can access - a directory. The allowed syntaxes are:</p> + a resource. The allowed syntaxes are:</p> <ul> <li> Require user <em>userid</em> [<em>userid</em>] ... - <p>Only the named users can access the directory.</p> + <p>Only the named users can access the resource.</p> </li> <li> @@ -2982,13 +3094,23 @@ Syntax OK <p>Only users in the named groups can access the - directory.</p> + resource.</p> </li> <li> Require valid-user - <p>All valid users can access the directory.</p> + <p>All valid users can access the resource.</p> + </li> + <li>file-owner + <p>Only the user, whose name matches the system's name for + the file owner, can access the resource.<br> + [Available after Apache 1.3.20]</p> + </li> + <li>file-group + <p>Only the members of the group, whose name matches the + system's name of the file owner group, can access the + resource.<br>[Available after Apache 1.3.20]</p> </li> </ul> @@ -3066,15 +3188,13 @@ Syntax OK <p>Alternatively you can use a wildcard to limit the scope; i.e to only *.conf files. </p> - <p>Note that by default <emph>any</emph> file in the specified + <p>Note that by default <em>any</em> file in the specified directory will be loaded as a configuration file. - <p> </p> - So make sure that you don't have stray files in + <p>So make sure that you don't have stray files in this directory by mistake, such as temporary files created by your editor, for example.</p> - <p>See also <a href="#accessconfig">AccessConfig</a>.</p> <hr /> @@ -3781,7 +3901,7 @@ Syntax OK <code>9090</code>, then the <em>canonical name</em> of the server is <code>www.example.com:9090</code>. In the event that <code>Port</code> has its default value of <code>80</code>, the - <code>:80</code> is ommitted from the <em>canonical name</em>. + <code>:80</code> is omitted from the <em>canonical name</em>.</p> <p>With <code>UseCanonicalName off</code> Apache will form self-referential URLs using the hostname and port supplied by diff --git a/usr.sbin/httpd/htdocs/manual/mod/directives.html.de b/usr.sbin/httpd/htdocs/manual/mod/directives.html.de index b0fb88568c1..a5375d5b361 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/directives.html.de +++ b/usr.sbin/httpd/htdocs/manual/mod/directives.html.de @@ -31,6 +31,8 @@ wobei es zu den im Beschreibungsformat verwendeten Feldern eine eigene gibt. </P> <UL> +<li><a href="core.html#acceptfilter">AcceptFilter</a></li> +<li><a href="core.html#acceptmutex">AcceptMutex</a></li> <LI><A HREF="core.html#accessconfig">AccessConfig</A> <LI><A HREF="core.html#accessfilename">AccessFileName</A> <LI><A HREF="mod_actions.html#action">Action</A> @@ -75,8 +77,8 @@ gibt. <LI><A HREF="core.html#authtype">AuthType</A> <LI><A HREF="mod_auth.html#authuserfile">AuthUserFile</A> <LI><A HREF="core.html#bindaddress">BindAddress</A> -<LI><A HREF="mod_setenvif.html#BrowserMatch">BrowserMatch</A> -<LI><A HREF="mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</A> +<LI><A HREF="mod_setenvif.html#browsermatch">BrowserMatch</A> +<LI><A HREF="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</A> <LI><A HREF="core.html#bs2000account">BS2000Account</A> <LI><A HREF="mod_proxy.html#cachedefaultexpire">CacheDefaultExpire</A> <LI><A HREF="mod_proxy.html#cachedirlength">CacheDirLength</A> @@ -91,9 +93,13 @@ gibt. <LI><A HREF="mod_speling.html#checkspelling">CheckSpelling</A> <LI><A HREF="core.html#clearmodulelist">ClearModuleList</A> <LI><A HREF="core.html#contentdigest">ContentDigest</A> +<li><a href="mod_usertrack.html#cookiedomain">CookieDomain</a></li> <LI><A HREF="mod_usertrack.html#cookieexpires">CookieExpires</A> +<li><a href="mod_usertrack.html#cookieformat">CookieFormat</a></li> <LI><A HREF="mod_cookies.html#cookielog">CookieLog</A> (mod_cookies) <LI><A HREF="mod_log_config.html#cookielog">CookieLog</A> (mod_log_config) +<li><a href="mod_usertrack.html#cookieprefix">CookiePrefix</a></li> +<li><a href="mod_usertrack.html#cookiestyle">CookieStyle</a></li> <LI><A HREF="mod_usertrack.html#cookietracking">CookieTracking</A> <LI><A HREF="core.html#coredumpdirectory">CoreDumpDirectory</A> <LI><A HREF="mod_log_config.html#customlog">CustomLog</A> @@ -109,6 +115,7 @@ gibt. <LI><A HREF="core.html#ebcdicconvertbytype">EBCDICConvertByType</A> <LI><A HREF="core.html#ebcdickludge">EBCDICKludge</A> <LI><A HREF="core.html#errordocument">ErrorDocument</A> +<li><a href="mod_headers.html#errorheader">ErrorHeader</a></li> <LI><A HREF="core.html#errorlog">ErrorLog</A> <LI><A HREF="mod_example.html#example">Example</A> <LI><A HREF="mod_expires.html#expiresactive">ExpiresActive</A> @@ -116,6 +123,7 @@ gibt. <LI><A HREF="mod_expires.html#expiresdefault">ExpiresDefault</A> <LI><A HREF="mod_status.html#extendedstatus">ExtendedStatus</A> <LI><A HREF="mod_autoindex.html#fancyindexing">FancyIndexing</A> +<li><a href="core.html#fileetag">FileETag</a></li> <LI><A HREF="core.html#files"><Files></A> <LI><A HREF="core.html#filesmatch"><FilesMatch></A> <LI><A HREF="mod_mime.html#forcetype">ForceType</A> @@ -142,6 +150,7 @@ gibt. <LI><A HREF="mod_negotiation.html#languagepriority">LanguagePriority</A> <LI><A HREF="core.html#limit"><Limit></A> <LI><A HREF="core.html#limitexcept"><LimitExcept></A> +<LI><A HREF="core.html#limitinternalrecursion">LimitInternalRecursion</A> <LI><A HREF="core.html#limitrequestbody">LimitRequestBody</A> <LI><A HREF="core.html#limitrequestfields">LimitRequestFields</A> <LI><A HREF="core.html#limitrequestfieldsize">LimitRequestFieldsize</A> @@ -172,6 +181,7 @@ gibt. <LI><A HREF="mod_env.html#passenv">PassEnv</A> <LI><A HREF="core.html#pidfile">PidFile</A> <LI><A HREF="core.html#port">Port</A> +<li><a href="core.html#protocolreqcheck">ProtocolReqCheck</a></li> <LI><A HREF="mod_proxy.html#proxyblock">ProxyBlock</A> <LI><A HREF="mod_proxy.html#proxydomain">ProxyDomain</A> <LI><A HREF="mod_proxy.html#proxypass">ProxyPass</A> @@ -224,8 +234,9 @@ gibt. <LI><A HREF="core.html#servertype">ServerType</A> <LI><A HREF="mod_env.html#setenv">SetEnv</A> <LI><A HREF="mod_setenvif.html#setenvif">SetEnvIf</A> -<LI><A HREF="mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</A> +<LI><A HREF="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</A> <LI><A HREF="mod_mime.html#sethandler">SetHandler</A> +<li><a href="core.html#shmemuidisuser">ShmemUIDisUser</a></li> <LI><A HREF="core.html#startservers">StartServers</A> <LI><A HREF="core.html#threadsperchild">ThreadsPerChild</A> <LI><A HREF="core.html#timeout">TimeOut</A> diff --git a/usr.sbin/httpd/htdocs/manual/mod/directives.html.en b/usr.sbin/httpd/htdocs/manual/mod/directives.html.en index 8bc8dc53877..97d728422aa 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/directives.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/directives.html.en @@ -145,10 +145,10 @@ <li><a href="core.html#bindaddress">BindAddress</a></li> <li><a - href="mod_setenvif.html#BrowserMatch">BrowserMatch</a></li> + href="mod_setenvif.html#browsermatch">BrowserMatch</a></li> <li><a - href="mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a></li> + href="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></li> <li><a href="core.html#bs2000account">BS2000Account</a></li> @@ -180,6 +180,8 @@ <li><a href="mod_proxy.html#cachesize">CacheSize</a></li> + <li><a href="core.html#cgicommandargs">CGICommandArgs</a></li> + <li><a href="mod_speling.html#checkspelling">CheckSpelling</a></li> @@ -194,6 +196,9 @@ <li><a href="mod_usertrack.html#cookieexpires">CookieExpires</a></li> + <li><a + href="mod_usertrack.html#cookieformat">CookieFormat</a></li> + <li><a href="mod_cookies.html#cookielog">CookieLog</a> (mod_cookies)</li> @@ -201,6 +206,9 @@ (mod_log_config)</li> <li><a + href="mod_usertrack.html#cookieprefix">CookiePrefix</a></li> + + <li><a href="mod_usertrack.html#cookiestyle">CookieStyle</a></li> <li><a @@ -243,6 +251,8 @@ <li><a href="core.html#errordocument">ErrorDocument</a></li> + <li><a href="mod_headers.html#errorheader">ErrorHeader</a></li> + <li><a href="core.html#errorlog">ErrorLog</a></li> <li><a href="mod_example.html#example">Example</a></li> @@ -330,6 +340,9 @@ href="core.html#limitexcept"><LimitExcept></a></li> <li><a + href="core.html#limitinternalrecursion">LimitInternalRecursion</a></li> + + <li><a href="core.html#limitrequestbody">LimitRequestBody</a></li> <li><a @@ -535,7 +548,7 @@ <li><a href="mod_setenvif.html#setenvif">SetEnvIf</a></li> <li><a - href="mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</a></li> + href="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></li> <li><a href="mod_mime.html#sethandler">SetHandler</a></li> diff --git a/usr.sbin/httpd/htdocs/manual/mod/directives.html.fr b/usr.sbin/httpd/htdocs/manual/mod/directives.html.fr index 89a7fccde4a..9576f91168c 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/directives.html.fr +++ b/usr.sbin/httpd/htdocs/manual/mod/directives.html.fr @@ -149,10 +149,10 @@ <li><a href="core.html#bindaddress">BindAddress</a></li> <li><a - href="mod_setenvif.html#BrowserMatch">BrowserMatch</a></li> + href="mod_setenvif.html#browsermatch">BrowserMatch</a></li> <li><a - href="mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a></li> + href="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></li> <li><a href="core.html#bs2000account">BS2000Account</a></li> @@ -527,7 +527,7 @@ <li><a href="mod_setenvif.html#setenvif">SetEnvIf</a></li> <li><a - href="mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</a></li> + href="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></li> <li><a href="mod_mime.html#sethandler">SetHandler</a></li> diff --git a/usr.sbin/httpd/htdocs/manual/mod/directives.html.html b/usr.sbin/httpd/htdocs/manual/mod/directives.html.html index ac29ce7a470..c2b7d78ba6d 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/directives.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/directives.html.html @@ -147,10 +147,10 @@ <li><a href="core.html#bindaddress">BindAddress</a></li> <li><a - href="mod_setenvif.html#BrowserMatch">BrowserMatch</a></li> + href="mod_setenvif.html#browsermatch">BrowserMatch</a></li> <li><a - href="mod_setenvif.html#BrowserMatchNoCase">BrowserMatchNoCase</a></li> + href="mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></li> <li><a href="core.html#bs2000account">BS2000Account</a></li> @@ -182,6 +182,8 @@ <li><a href="mod_proxy.html#cachesize">CacheSize</a></li> + <li><a href="core.html#cgicommandargs">CGICommandArgs</a></li> + <li><a href="mod_speling.html#checkspelling">CheckSpelling</a></li> @@ -196,6 +198,9 @@ <li><a href="mod_usertrack.html#cookieexpires">CookieExpires</a></li> + <li><a + href="mod_usertrack.html#cookieformat">CookieFormat</a></li> + <li><a href="mod_cookies.html#cookielog">CookieLog</a> (mod_cookies)</li> @@ -203,6 +208,9 @@ (mod_log_config)</li> <li><a + href="mod_usertrack.html#cookieprefix">CookiePrefix</a></li> + + <li><a href="mod_usertrack.html#cookiestyle">CookieStyle</a></li> <li><a @@ -243,6 +251,8 @@ <li><a href="core.html#errordocument">ErrorDocument</a></li> + <li><a href="mod_headers.html#errorheader">ErrorHeader</a></li> + <li><a href="core.html#errorlog">ErrorLog</a></li> <li><a href="mod_example.html#example">Example</a></li> @@ -330,6 +340,9 @@ href="core.html#limitexcept"><LimitExcept></a></li> <li><a + href="core.html#limitinternalrecursion">LimitInternalRecursion</a></li> + + <li><a href="core.html#limitrequestbody">LimitRequestBody</a></li> <li><a @@ -535,7 +548,7 @@ <li><a href="mod_setenvif.html#setenvif">SetEnvIf</a></li> <li><a - href="mod_setenvif.html#SetEnvIfNoCase">SetEnvIfNoCase</a></li> + href="mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></li> <li><a href="mod_mime.html#sethandler">SetHandler</a></li> diff --git a/usr.sbin/httpd/htdocs/manual/mod/directives.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/directives.html.ja.jis index 7f1d0f27765..5a17a7e1fed 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/directives.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/directives.html.ja.jis @@ -7,7 +7,7 @@ <title>Apache $B%G%#%l%/%F%#%V(B</title> </head> - <!-- English revision: 1.75 --> + <!-- English revision: 1.79 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -193,12 +193,18 @@ <li><a href="mod_usertrack.html#cookieexpires" >CookieExpires</a></li> + <li><a + href="mod_usertrack.html#cookieformat">CookieFormat</a></li> + <li><a href="mod_cookies.html#cookielog">CookieLog</a> (mod_cookies)</li> <li><a href="mod_log_config.html#cookielog">CookieLog</a> (mod_log_config)</li> + <li><a + href="mod_usertrack.html#cookieprefix">CookiePrefix</a></li> + <li><a href="mod_usertrack.html#cookiestyle">CookieStyle</a></li> <li><a href="mod_usertrack.html#cookietracking" @@ -239,6 +245,8 @@ <li><a href="core.html#errordocument">ErrorDocument</a></li> + <li><a href="mod_headers.html#errorheader">ErrorHeader</a></li> + <li><a href="core.html#errorlog">ErrorLog</a></li> <li><a href="mod_example.html#example">Example</a></li> @@ -535,6 +543,8 @@ <li><a href="mod_mime.html#sethandler">SetHandler</a></li> + <li><a href="core.html#shmemuidisuser">ShmemUIDisUser</a></li> + <li><a href="core.html#startservers">StartServers</a></li> <li><a href="core.html#threadsperchild" diff --git a/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html.ja.jis index e35ead611b3..605f9aced7e 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html.ja.jis @@ -1,3 +1,4 @@ +<?xml version="1.0" encoding="iso-2022-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -18,13 +19,14 @@ </div> - <h1 align="CENTER">Apache $B%b%8%e!<%k(B</h1> + <h1 align="center">Apache $B%b%8%e!<%k(B</h1> <p>Apache $B$NG[I[$K4^$^$l$F$$$k%b%8%e!<%k$O!"0J2<$NDL$j$G$9!#(B - <a href="./">$B%"%k%U%!%Y%C%H=g(B</a> $B$d(B <a href="directives.html">Apache $B$NA4%G%#%l%/%F%#%V(B</a> - $B$N%"%k%U%!%Y%C%H=g%j%9%H$b;2>H$7$F$/$@$5$$!#(B + <a href="./">$B%"%k%U%!%Y%C%H=g(B</a> $B$d(B <a href="directives.html">Apache + $B$NA4%G%#%l%/%F%#%V(B</a> $B$N%"%k%U%!%Y%C%H=g%j%9%H$b;2>H$7$F$/$@$5$$!#(B Apache $B$NG[I[$K4^$^$l$J$$(B Apache $B%b%8%e!<%k$K$D$$$F$O(B <a - href="http://modules.apache.org/">http://modules.apache.org</a> $B$r;2>H$7$F$/$@$5$$!#(B</p> + href="http://modules.apache.org/">http://modules.apache.org</a> + $B$r;2>H$7$F$/$@$5$$!#(B</p> <h2>$B%3%"(B</h2> @@ -48,7 +50,7 @@ <dt><a href="mod_unique_id.html">mod_unique_id</a> Apache 1.3 and up</dt> - <dd>$B%j%/%(%9%HKh$K!"0l0U$J%j%/%(%9%H(B ID $B$r@8@.$9$k(B</dd> + <dd>$B%j%/%(%9%H$4$H$K!"0l0U$J%j%/%(%9%H(B ID $B$r@8@.$9$k(B</dd> </dl> <h2>$B%3%s%F%s%D$N<oN`$r7hDj$9$k(B</h2> @@ -72,11 +74,13 @@ <dl> <dt><a href="mod_alias.html">mod_alias</a></dt> - <dd>$B%[%9%H%U%!%$%k%7%9%F%`$N%I%-%e%a%s%H%D%j!<$X$N%^%C%T%s%05Z$S(B URL $B$N%j%@%$%l%/%7%g%s$r9T$J$&(B</dd> + <dd>$B%[%9%H%U%!%$%k%7%9%F%`$N%I%-%e%a%s%H%D%j!<$X$N%^%C%T%s%05Z$S(B + URL $B$N%j%@%$%l%/%7%g%s$r9T$J$&(B</dd> <dt><a href="mod_rewrite.html">mod_rewrite</a> Apache 1.2 $B0J9_(B</dt> - <dd>$B@55,I=8=$rMxMQ$7$?!"(BURI $B$+$i%U%!%$%kL>$X$N6/NO$J%^%C%T%s%05!G=$rDs6!$9$k(B</dd> + <dd>$B@55,I=8=$rMxMQ$7$?!"(BURI + $B$+$i%U%!%$%kL>$X$N6/NO$J%^%C%T%s%05!G=$rDs6!$9$k(B</dd> <dt><a href="mod_userdir.html">mod_userdir</a></dt> @@ -112,7 +116,7 @@ <dt><a href="mod_auth.html">mod_auth</a></dt> - <dd>$B%F%-%9%H%U%!%$%k7A<0$NG'>Z%U%!%$%k$r;HMQ$7$?(B $B%f!<%6G'>Z5!G=$rDs6!$9$k(B</dd> + <dd>$B%F%-%9%H%U%!%$%k7A<0$NG'>Z%U%!%$%k$r;HMQ$7$?%f!<%6G'>Z5!G=$rDs6!$9$k(B</dd> <dt><a href="mod_auth_dbm.html">mod_auth_dbm</a></dt> @@ -169,7 +173,8 @@ <dt><a href="mod_actions.html">mod_actions</a> Apache 1.1 $B0J9_(B</dt> - <dd>$B%a%G%#%"%?%$%W$d%j%/%(%9%H%a%=%C%I$K$h$C$F(B CGI $B%9%/%j%W%H$r<B9T$9$k(B</dd> + <dd>$B%a%G%#%"%?%$%W$d%j%/%(%9%H%a%=%C%I$K$h$C$F(B CGI + $B%9%/%j%W%H$r<B9T$9$k(B</dd> <dt><a href="mod_isapi.html">mod_isapi</a> WIN32 $B$N$_(B</dt> @@ -221,12 +226,13 @@ <dt><a href="mod_so.html">mod_so</a> Apache 1.3 $B0J9_(B</dt> - <dd>$B<B9T;~$K%b%8%e!<%k(B (UNIX$B$G$O(B .so$B!"(BWin32 $B$G$O(B .dll) $B$rF0E*FI$_9~$_$9$k5!G=$rDs6!$9$k(B</dd> + <dd>$B<B9T;~$K%b%8%e!<%k(B (UNIX$B$G$O(B .so$B!"(BWin32 $B$G$O(B .dll) + $B$rF0E*FI$_9~$_$9$k5!G=$rDs6!$9$k(B</dd> <dt><a href="mod_mmap_static.html">mod_mmap_static</a> Apache $B0J9_(B</dt> <dd>$B%U%!%$%k$N%-%c%C%7%s%0$r9T$J$&<B83E*$J%b%8%e!<%k$G!"(B - $B%U%!%$%k$r%a%b%jFb$K%^%C%T%s%0$9$k$3$H$K$h$j(B $B%Q%U%)!<%^%s%9$r8~>e$5$;$k(B</dd> + $B%U%!%$%k$r%a%b%jFb$K%^%C%T%s%0$9$k$3$H$K$h$j%Q%U%)!<%^%s%9$r8~>e$5$;$k(B</dd> </dl> <h2>$B3+H/MQ(B</h2> @@ -242,19 +248,24 @@ <dl> <dt><a href="mod_browser.html">mod_browser</a> Apache 1.2.* $B$N$_(B</dt> - <dd>User-Agent $BJ8;zNs$r85$K4D6-JQ?t$r@_Dj$9$k!#(B Apache 1.3 $B0J9_$K$*$$$F!"(Bmod_setenvif $B$GCV$-49$($i$l$?(B</dd> + <dd>User-Agent $BJ8;zNs$r85$K4D6-JQ?t$r@_Dj$9$k!#(BApache 1.3 + $B0J9_$K$*$$$F!"(Bmod_setenvif $B$GCV$-49$($i$l$?(B</dd> <dt><a href="mod_cookies.html">mod_cookies</a> Apache 1.1.1 $B0J9_(B</dt> - <dd>Netscape $B$N$h$&$J(B cookie $B$r%5%]!<%H$9$k!#(B Apache 1.2 $B$K$*$$$F!"(Bmod_usertrack $B$KCV$-49$($i$l$?(B</dd> + <dd>Netscape $B$N$h$&$J(B cookie $B$r%5%]!<%H$9$k!#(B Apache 1.2 + $B$K$*$$$F!"(Bmod_usertrack $B$KCV$-49$($i$l$?(B</dd> <dt><a href="mod_dld.html">mod_dld</a> Apache 1.2.* $B0JA0(B</dt> - <dd>GNU libdld $B$rMQ$$$F5/F0;~$K%b%8%e!<%k$N%j%s%/$r9T$J$&!#(B Apache 1.3 $B$K$*$$$F!"(Bmod_so $B$KCV$-49$($i$l$?(B</dd> + <dd>GNU libdld $B$rMQ$$$F5/F0;~$K%b%8%e!<%k$N%j%s%/$r9T$J$&!#(BApache + 1.3 $B$K$*$$$F!"(Bmod_so $B$KCV$-49$($i$l$?(B</dd> <dt><a href="mod_log_common.html">mod_log_common</a> Apache 1.1.1 $B0J9_(B</dt> - <dd>Common Logfile Format $B$G$NI8=`E*$J=q<0$K$h$j%m%0$r5-O?$9$k!#(B Apache 1.2 $B0J9_$K$*$$$F!"(Bmod_log_config $B%b%8%e!<%k$KCV$-49$($i$l$?(B</dd> + <dd>Common Logfile Format + $B$G$NI8=`E*$J=q<0$K$h$j%m%0$r5-O?$9$k!#(BApache 1.2 + $B0J9_$K$*$$$F!"(Bmod_log_config $B%b%8%e!<%k$KCV$-49$($i$l$?(B</dd> </dl> <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/mod/index.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/index.html.ja.jis index 1b916dce632..d1e50ccf49b 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/index.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/index.html.ja.jis @@ -231,7 +231,7 @@ <dt><a href="mod_unique_id.html">mod_unique_id</a> Apache 1.3 $B0J9_(B</dt> - <dd>$B%j%/%(%9%HKh$K!"0l0U$J%j%/%(%9%H(B ID $B$r@8@.$9$k(B</dd> + <dd>$B%j%/%(%9%H$4$H$K!"0l0U$J%j%/%(%9%H(B ID $B$r@8@.$9$k(B</dd> <dt><a href="mod_usertrack.html">mod_usertrack</a> Apache 1.2 $B0J9_(B</dt> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.en b/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.en index c99341eb799..c8f7b2520db 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.en @@ -184,7 +184,7 @@ SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in <p>See also <a href="#deny">Deny</a>, <a href="#order">Order</a> and <a - href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>.</p> + href="mod_setenvif.html#setenvif">SetEnvIf</a>.</p> <hr /> <h2><a id="deny" name="deny">Deny</a> <a id="denyfromenv" @@ -212,7 +212,7 @@ SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in <p>See also <a href="#allow">Allow</a>, <a href="#order">Order</a> and <a - href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>.</p> + href="mod_setenvif.html#setenvif">SetEnvIf</a>.</p> <hr /> <h2><a id="order" name="order">Order directive</a></h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.html b/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.html index cdf076cee45..37e106318d0 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_access.html.html @@ -186,7 +186,7 @@ SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in <p>See also <a href="#deny">Deny</a>, <a href="#order">Order</a> and <a - href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>.</p> + href="mod_setenvif.html#setenvif">SetEnvIf</a>.</p> <hr /> <h2><a id="deny" name="deny">Deny</a> <a id="denyfromenv" @@ -214,7 +214,7 @@ SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in <p>See also <a href="#allow">Allow</a>, <a href="#order">Order</a> and <a - href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>.</p> + href="mod_setenvif.html#setenvif">SetEnvIf</a>.</p> <hr /> <h2><a id="order" name="order">Order directive</a></h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html.ja.jis index f3a5449b0d8..75bdec448db 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html.ja.jis @@ -31,7 +31,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> action_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#(B</p> @@ -66,7 +66,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_actions<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#(B</p> @@ -116,7 +116,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_actions<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Script $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#G$0U$N%a%=%C%I$N;HMQ$O(B 1.3.10 $B0J9_$G$N$_;HMQ2DG=!#(B</p> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html index 420330ab402..9fc1cd3dc69 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html @@ -45,7 +45,7 @@ directives).</p> <p>Digest authentication is described in <a - href="http://www1.ics.uci.edu/pub/ietf/http/rfc2617.txt">RFC + href="http://ftp.ics.uci.edu/pub/ietf/http/rfc2617.txt">RFC 2617.</p> <h2>Directives</h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_msql.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_msql.html new file mode 100644 index 00000000000..9e85f5d2cdd --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_msql.html @@ -0,0 +1,488 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head> +<title>Module mod_auth_msql</title> +</head> +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.2 + </H3> +</DIV> + +<H1 ALIGN="CENTER">Module mod_auth_msql</H1> + +This module is contained in the <code>mod_auth_msql.c</code> file and +is compiled in by default. It allows access control using the public +domain mSQL database <code><a +href="ftp://ftp.bond.edu.au/pub/Minerva/msql">ftp://ftp.bond.edu.au/pub/Minerva/msql</a></code>, +a fast but limited SQL engine which can be contacted over an internal +Unix domain protocol as well as over normal TCP/IP socket +communication. It is only available in Apache 1.1 and later. <p> + +<a href="#FullDescription">Full description</a> / +<a href="#Example">Example</a> / +<a href="#CompileTimeOptions">Compile time options</a> / +<a href="#RevisionHistory">RevisionHistory</a> / +<a href="#Person">Person to blame</a> / +<a href="#Sourcecode">Sourcecode</a> +<p> + +<hr><h2><a name="FullDescription">Full description of all tokens</a></h2> +<dl> + +<code><dt> +Auth_MSQLhost < FQHN | IP Address | localhost > +</dt></code><dd> + Hostname of the machine running the mSQL demon. The effective uid + of the server should be allowed access. If not given, or if it is + the magic name <code>localhost</code>, it is passed to the mSQL library as a null + pointer. This effectively forces it to use /dev/msql rather than the + (slower) socket communication. +</dd> + +<code><dt> +Auth_MSQLdatabase < mSQL database name > +</dt></code><dd> + Name of the database in which the following table(s) are contained (Quick check: use the + mSQL command <code>relshow [<hostname> dbase]</code> to verify the spelling of the + database name). +</dd> + +<code><dt> +Auth_MSQLpwd_table < mSQL table name > +</dt></code><dd> + Contains at least the fields with the username + and the (encrypted) password. Each uid should only occur once in this table and + for performance reasons should be a primary key. + Normally this table is compulsory, but it is + possible to use a fall-through to other methods + and use the mSQL module for group control only. + See the <a href="#Authoritative"><code>Auth_MSQL_Authoritative</code></a> + directive below. +</dd> + +<code><dt> +Auth_MSQLgrp_table < mSQL table name in the above database > +</dt></code><dd> + Contains at least the fields with the + username and the groupname. A user which + is in multiple groups has therefore + multiple entries. There might be some performance + problems associated with this and one + might consider to have separate tables for each + group (rather than all groups in one table) if + your directory structure allows for it. + One only need to specify this table when doing + group control. +</dd> + +<code><dt> +Auth_MSQLuid_field < mSQL field name > +</dt></code><dd> + Name of the field containing the username in the <code> + Auth_MSQLpwd_table</code> and optionally in the <code> + Auth_MSQLgrp_table</code> tables. +</dd> + +<code><dt> +Auth_MSQLpwd_field < mSQL field name > +</dt></code><dd> + Fieldname for the passwords in the <code> + Auth_MSQLpwd_table</code> table. +</dd> + +<code><dt> +Auth_MSQLgrp_field < mSQL field name > +</dt></code><dd> + Fieldname for the groupname<br> + Only the fields used need to be specified. When this + module is compiled with the + <a href="#VITEK"><code>BACKWARD_VITEK</code></a> option then + the uid and pwd field names default to 'user' and 'password'. + However you are strongly encouraged to always specify these values + explicitly given the security issues involved. +</dd> + +<code><dt> +Auth_MSQL_nopasswd < on | off > +</dt></code><dd> + Skip password comparison if passwd field is + empty, i.e. allow any password. This is 'off' + by default to ensure that an empty field + in the mSQL table does not allow people in by + default with a random password. +</dd> + +<code><dt> +<a name="Authoritative">Auth_MSQL_Authoritative < on | off ></a> +</dt></code><dd> + Default is 'on'. When set 'on', there is no + fall-through to other authorization methods. So if a + user is not in the mSQL dbase table (and perhaps + not in the right group) or has the password wrong, then + he or she is denied access. When this directive is set to + 'off', control is passed on to any other authorization + modules, such as the basic auth module with the htpasswd + file or the Unix-(g)dbm modules. The default is 'on' + to avoid nasty 'fall-through' surprises. Be sure you + know what you are doing when you decide to switch it off. +</dd> + +<code><dt> +Auth_MSQL_EncryptedPasswords < on | off > +</dt></code><dd> + Default is 'on'. When set on, the values in the + pwd_field are assumed to be crypt-ed using *your* + machines 'crypt()' function and the incoming password + is 'crypt'ed before comparison. When this function is + 'off', the comparison is done directly with the plaintext + entered password. (Yes, http-basic-auth does send the + password as plaintext over the wire :-( ). The default + is a sensible 'on', and I personally think that it is + a *very-bad-idea* to change this. However a multi + vendor or international environment (which sometimes + leads to different crypts functions) might force you to. +</dd> +</dl> + + +<hr><h2><a name="Example">Example</a></h2> + +An example mSQL table could be created with the following commands: +<pre> + % msqladmin create www <br> + % msql www <br> + -> create table user_records ( <br> + -> User_id char(32) primary key, <br> + -> Cpasswd char(32), <br> + -> Xgroup char(32) <br> + -> ) \g <br> + query OK <br> + -> \q <br> + % <br> +</pre><br> + +The <code>User_id</code> can be as long as desired. However some of the +popular web browsers truncate names at or stop the user from entering +names longer than 32 characters. Furthermore the 'crypt' function +on your platform might impose further limits. Also use of +the <code>require users uid [uid..]</code> directive in the +<code>access.conf</code> file where the uid's are separated by +spaces can possibly prohibit the use of spaces in your usernames. +Also, please note the <a href="#MAX_FIELD_LEN"><code>MAX_FIELD_LEN</code></a> +directive somewhere below. +<p> +To use the above, the following example could be in your +<code>access.conf</code> file. Also there is a more elaborate description +below this example. +<p> + +<code><directory /web/docs/private></code> +<p> + +<dl> +<dt><code> +Auth_MSQLhost localhost<br> +</code></dt> + <blockquote>or</blockquote> +<dt><code> +Auth_MSQLhost datab.machine.your.org +</code></dt><dd> + If this directive is omitted or set to <code>localhost</code>, + it is assumed that Apache and the mSQL + database run on the same (physical) machine and the faster + /dev/msql communication channel will be used. Otherwise, + it is the machine to contact by TCP/IP. Consult the mSQL + documentation for more information. +</dd> +<p> + +<dt><code> +Auth_MSQLdatabase www +</code></dt><dd> + The name of the database on the above machine, + which contains *both* the tables for group and + for user/passwords. Currently it is not possible + to have these split over two databases. Make + sure that the <code>msql.acl</code> (access control file) of + mSQL does indeed allow the effective uid of the + web server read access to this database. Check the + httpd.conf file for this uid. +</dd> + +<code><dt> +Auth_MSQLpwd_table user_records +</dt></code><dd> + This is the table which contain the uid/password combination + is specified. +</dd> + +<code><dt> +Auth_MSQLuid_field User_id <br> +Auth_MSQLpwd_field Cpasswd +</dt></code><dd> + These two directive specify the field names in the <code>user_record</code> + table. If this module is compiled with the <a href="#VITEK"><code>BACKWARD_VITEK</code></a> + compatibility switch, the defaults <code>user</code> and <code>password</code> are + assumed if you do not specify them. Currently the user_id field + *MUST* be a primary key or one must ensure that each user only + occurs <b>once</b> in the table. If a uid occurs twice access is + denied by default; but see the <code><a href="#ONLY_ONCE">ONLY_ONCE</a></code> + compiler directive for more information. +</dd> + +<code><dt> +Auth_MSQLgrp_table user_records <br> +Auth_MSQLgrp_field Xgroup <br> +</dt></code><dd> + Optionally one can also specify a table which contains the + user/group combinations. This can be the same table which + also contains the username/password combinations. However + if a user belongs to two or more groups, one will have to + use a different table with multiple entries. +</dd> + +<code><dt> +Auth_MSQL_nopasswd off <br> +Auth_MSQL_Authoritative on <br> +Auth_MSQL_EncryptedPasswords on <br> +</dt></code><dd> + These three optional fields (all set to the sensible defaults, + so you really do not have to enter them) are described in more + detail below. If you choose to set these to any other values then + the above, be very sure you understand the security implications and + do verify that Apache does what you expect it to do. +</dd> + +<code><dt> +AuthName example mSQL realm <br> +AuthType basic +</dt></code> +<dd> + Normal Apache/NCSA tokens for access control + <p> + <code><limit get post head></code><br> + <code>order deny,allow </code><br> + <code>allow from all </code><br> + <p> + <code>require valid-user </code><br> + <ul><li><code>valid-user</code>; allow in any user which has a valid uid/passwd + pair in the above pwd_table. + </ul> + or<br> + <code>require user smith jones </code><br> + <ul><li>Limit access to users who have a valid uid/passwd pair in the + above pwd_table *and* whose uid is 'smith' or 'jones'. Do note that + the uid's are separated by 'spaces' for historic (NCSA) reasons. + So allowing uids with spaces might cause problems. + </ul> + <code>require group has_paid</code><br> + <ul><li>Optionally also ensure that the uid has the value 'has_paid' in + the group field in the group table. + </ul> + <code><limit> </code><br> +</dd> +</dl> + + +<hr><h2><a name="CompileTimeOptions">Compile Time Options</a></h2> + +<dl> +<dt><code> +<a name="ONLY_ONCE">#define ONLY_ONCE 1</a> +</code></dt><dd> + If the mSQL table containing the uid/passwd combination does + not have the uid field as a primary key, it is possible for the + uid to occur more than once in the table with possibly different + passwords. When this module is compiled with the <code>ONLY_ONCE</code> + directive set, access is denied if the uid occurs more than once in the + uid/passwd table. If you choose not to set it, the software takes + the first pair returned and ignores any further pairs. The SQL + statement used for this is<br> + <p><code>"select password form pwd_table where user='UID'"</code><p> + this might lead to unpredictable results. For this reason as well + as for performance reasons you are strongly advised to make the + uid field a primary key. Use at your own peril :-) +</dd> + +<dt><code> +<a name="KEEP_MSQL_CONNECTION_OPEN">#define KEEP_MSQL_CONNECTION_OPEN</a> +</code></dt><dd> + Normally the (TCP/IP) connection with the database is opened and + closed for each SQL query. When the Apache web-server and the database + are on the same machine, and /dev/msql is used this does not + cause a serious overhead. However when your platform does not + support this (see the mSQL documentation) or when the web server + and the database are on different machines the overhead can be + considerable. When the above directive is set defined the server leaves + the connection open, i.e. no call to <code>msqlClose()</code>. + If an error occurs an attempt is made to reopen the connection for + the next http request. + <p> + This has a number of very serious drawbacks + <ul><li> It costs 2 already rare file-descriptors for each child. + <li> It costs msql-connections, typically one per child. The (compiled in) + number of connections mSQL can handle is low, typically 6 or 12. + which might prohibit access to the mSQL database for later + processes. + <li> When a child dies, it might not free that connection properly + or quick enough. + <li> When errors start to occur, connection/file-descriptor resources + might become exhausted very quickly. + </ul> + <p> + In short, use this at your own peril and only in a highly controlled and + monitored environment. +</dd> + +<dt><code> +<a name="VITEK"> +#define BACKWARD_VITEK<br></a> +#define VITEK_uid_name "user"<br> +#define VITEK_gid_name "passwd" +</code></dt><dd> + A second mSQL auth module for Apache has also been developed by Vivek Khera + <<a href="mailto:khera@kciLink.com"><code>khera@kciLink.com</code></a>> + and was subsequently distributed with some early versions of Apache. It + can be obtained from + <code><a href="ftp://ftp.kcilink.com/pub/">ftp://ftp.kcilink.com/pub/mod_auth_msql.c*</a></code>. + Older 'vitek' versions had the field/table names compiled in. Newer + versions, v.1.11 have more <code>access.conf</code> configuration + options. However these where chosen not to be in line the 'ewse' + version of this module. Also, the 'vitek' module does not give group + control or 'empty' password control. + <p> + To get things slightly more in line this version (0.9) should + be backward compatible with the 'vitek' module by: + <ul><li> Adding support for the <code>Auth_MSQL_EncryptedPasswords</code> on/off functionality + <li> Adding support for the different spelling of the 4 configuration + tokens for user-table-name, user/password-field-name and dbase-name. + <li> Setting some field names to a default which used to be hard + coded in in older 'vitek' modules. + </ul> + <p> + If this troubles you, remove the 'BACKWARD_VITEK' define. +</dd> + +<dt><code> +<a name="MAX_FIELD_LEN"> +#define MAX_FIELD_LEN (64)<br> +#define MAX_QUERY_LEN (32+24+MAX_FIELD_LEN*2+3*MSQL_FIELD_NAME_LEN+1*MSQL_TABLE_NAME_LEN)<br></a> +</code></dt><dd> + In order to avoid using the very large <code>HUGE_STRING_LENGTH</code>, the above two compile + time directives are supplies. The <code>MAX_FIELD_LEN</code> contains the maximum number of + characters in your user, password and group fields. The maximum query length is derived + from those values. + <p> + We only do the following two queries: + <ul><li>For the user/passwd combination + <p><code>"select PWDFIELD from PWDTABLE where USERFIELD='UID'"</code><br> + <li>Optionally for the user/group combination: + <p><code>"select GROUPFIELD from GROUPTABLE where USERFIELD='UID' and GROUPFIELD='GID'"</code><br> + </ul> + <p> + This leads to the above limit for the query string. We are ignoring escaping a wee bit here + assuming not more than 24 escapes.) +</dd> +</dl> + + +<hr><h2><a name="RevisionHistory">Revision History</a></h2> + +This version: 23 Nov 1995, 24 Feb 1996, 16 May 1996. + +<dl> + +<dt>Version 0.0<br></dt> + <dd>First release + </dd> +<dt>Version 0.1<br></dt> + <dd>Update to Apache 1.00 + </dd> +<dt>Version 0.2<br></dt> + <dd>Added lines which got missing God knows when + and which did the valid-user authentication no good at all ! + </dd> +<dt>Version 0.3<br></dt> + <dd>Added '<code>Auth_MSQL_nopasswd</code>' option + </dd> +<dt>Version 0.4<br></dt> + <dd>Cleaned out the error messages mess. + </dd> +<dt>Version 0.6<br></dt> + <dd>Inconsistency with gid/grp in comment/token/source + Make sure you really use '<code>Auth_MSQLgrp_field</code>' + as indicated above. + </dd> +<dt>Version 0.7<br></dt> + <dd><code>*host</code> to <code>host</code> fixed. Credits + go to Rob Stout, <stout@lava.et.tudelft.nl> for + spotting this one. + </dd> +<dt>Version 0.8<br></dt> + <dd>Authoritative directive added. See above. + </dd> +<dt>Version 0.9<br></dt> + <dd><code>palloc</code> return code check(s), should be + backward compatible with 1.11 version of Vivek Khera + <khera@kciLink.com> msql + module, fixed broken err msg in group control, changed + command table messages to make more sense when displayed + in that new module management tool. Added + <code>Auth_MSQL_EncryptedPasswords</code> on/off functionality. + msqlClose() statements added upon error. Support for + persistent connections with the mSQL database (riscy). + Escaping of ' and \. Replaced some + <code>MAX_STRING_LENGTH</code> claims. + </dd> +</dl> + + +<hr><h2><a name="Person">Contact/person to blame</a></h2> + +This module was written for the +<a href="http://ewse.ceo.org">European Wide Service Exchange</a> by +<<a href="mailto:Dirk.vanGulik@jrc.it"><code>Dirk.vanGulik@jrc.it</code></a>>. +Feel free to contact me if you have any problems, ice-creams or bugs. This +documentation, courtesy of Nick Himba, <a href="mailto:himba@cs.utwente.nl"> +<code><himba@cs.utwente.nl></code></a>. +<p> + + +<hr><h2><a NAME="Sourcecode">Sourcecode</a></h2> + +The source code can be found at <a href="http://www.apache.org"><code> +http://www.apache.org</code></a>. A snapshot of a development version +usually resides at <a href="http://me-www.jrc.it/~dirkx/mod_auth_msql.c"><code> +http://me-www.jrc.it/~dirkx/mod_auth_msql.c</code></a>. Please make sure +that you always quote the version you use when filing a bug report. +<p> +Furthermore a test/demonstration suite (which assumes that you have +both mSQL and Apache compiled and installed) is available at the contrib +section of <a href="ftp://ftp.apache.org/apache/dist/contrib"><code> +ftp://ftp.apache.org/apache/dist/contrib</code></a> or +<a href="http://me-www.jrc.it/~dirkx/apache-msql-demo.tar.gz"><code> +http://me-www.jrc.it/~dirkx/apache-msql-demo.tar.gz</code></a> and +its <a href="http://me-www.jrc.it/~dirkx/apache-msql-demo"><code> +README</code></a> file. + +<HR> +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.2 +</H3> + +<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A> +<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A> + +</body> +</html> + diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html b/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html index 22219823021..ca00533594e 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html @@ -117,7 +117,7 @@ directory listing. The query options are of the form <samp>X=Y</samp>, where <samp>X</samp> is one of <samp>N</samp> (file <em>N</em>ame), <samp>M</samp> (file last - <em>M</em>odified date), <samp>S</samp> (file <em>S</em>ize, or + <em>M</em>odified date), <samp>S</samp> (file <em>S</em>ize), or <samp>D</samp> (file <em>D</em>escription), and <samp>Y</samp> is one of <samp>A</samp> (<em>A</em>scending) or <samp>D</samp> (<em>D</em>escending).</p> @@ -253,7 +253,7 @@ <a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> AddDescription - <em>string file</em> [<em>file</em>] ...<br /> + <em>"string" file|directory</em> [<em>file|directory</em>] ...<br /> <a href="directive-dict.html#Context" rel="Help"><strong>Context:</strong></a> server config, virtual host, directory, .htaccess<br /> @@ -264,10 +264,11 @@ <a href="directive-dict.html#Module" rel="Help"><strong>Module:</strong></a> mod_autoindex - <p>This sets the description to display for a file, for <a - href="#fancyindexing">FancyIndexing</a>. <em>File</em> is a - file extension, partial filename, wild-card expression or full - filename for files to describe. <em>String</em> is enclosed in + <p>This sets the description to display for a file or directory, for <a + href="#indexoptions">IndexOptions FancyIndexing</a>. + <em>file|directory</em> is a file extension, partial filename or + directory name, wild-card expression or full filename or directory name, + for files or directories to describe. <em>String</em> is enclosed in double quotes (<code>"</code>). Example:</p> <blockquote> @@ -495,15 +496,21 @@ </blockquote> <blockquote> - <strong>Apache versions after 1.3.6:</strong> + <p><strong>Apache versions after 1.3.6:</strong> <em>Filename</em> is treated as a URI path relative to the - one used to access the directory being indexed, and must + one used to access the directory being indexed. Note that this + means that if <em>Filemame</em> starts with a slash, it will be + taken to be relative to the <a + href="core.html#documentroot">DocumentRoot</a>.</p> + + <p><em>Filename</em> must resolve to a document with a major content type of "<samp>text</samp>" (<em>e.g.</em>, <samp>text/html</samp>, <samp>text/plain</samp>, <em>etc.</em>). This means that <em>filename</em> may refer to a CGI script if the script's actual file type (as opposed to its output) is marked as - <samp>text/html</samp> such as with a directive like: + <samp>text/html</samp> such as with a directive like: </p> + <pre> AddType text/html .cgi </pre> @@ -680,7 +687,8 @@ software.</dd> <dt><a id="indexoptions:ignorecase" - name="indexoptions:ignorecase">IgnoreCase</a></dt> + name="indexoptions:ignorecase">IgnoreCase</a> + (<em>Apache 1.3.24 and later</em>)</dt> <dd> If this option is enabled, names are sorted in case-insensitive diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html b/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html index c659817b72d..3061b1ea4aa 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html @@ -46,7 +46,7 @@ CERN users who can exploit this module. <p>More information on the <a - href="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir"> + href="http://www.w3.org/Daemon/User/Config/General.html#MetaDir"> CERN metafile semantics</a> is available.</p> <h2>Directives</h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.en b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.en index 5616f5a5c73..8b21039fb40 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.en @@ -164,7 +164,7 @@ <p>This log will be opened as the user the child processes run as, ie. the user specified in the main <a - href="core.html#User">User</a> directive. This means that + href="core.html#user">User</a> directive. This means that either the directory the script log is in needs to be writable by that user or the file needs to be manually created and set to be writable by that user. If you place the script log in diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.html b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.html index ddd4c01f610..74435a72ed7 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.html @@ -166,7 +166,7 @@ <p>This log will be opened as the user the child processes run as, ie. the user specified in the main <a - href="core.html#User">User</a> directive. This means that + href="core.html#user">User</a> directive. This means that either the directory the script log is in needs to be writable by that user or the file needs to be manually created and set to be writable by that user. If you place the script log in diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.ja.jis index 766c060f6ba..0253eb2c50d 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html.ja.jis @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="iso-2022-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Apache module mod_cgi</title> </head> - <!-- English revision: 1.24 --> + <!-- English revision: 1.25 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -36,7 +36,7 @@ $B$G$"$k$+!"%O%s%I%i(B <code>cgi-script</code> (Apache 1.1 $B0J9_(B) $B$,;XDj$5$l$F$$$k%U%!%$%k$O(B CGI $B%9%/%j%W%H$H$7$F07$o$l!"(B $B%5!<%P$K$h$j<B9T$5$l!"$=$N=PNO$,%/%i%$%"%s%H$KJV$5$l$^$9!#(B - $B%U%!%$%k$O!"(B<a href="#mod_mime.html#addtype">AddType</a> + $B%U%!%$%k$O!"(B<a href="mod_mime.html#addtype">AddType</a> $B%G%#%l%/%F%#%V$K;XDj$5$l$?(B $B3HD%;R$rL>A0$K4^$`$+!"(B <a href="mod_alias.html#scriptalias">ScriptAlias</a> $B%G%#%l%/%H%j$KB8:_$9$k$3$H$K$h$j$3$N%?%$%W$K$J$j$^$9!#(B @@ -164,7 +164,7 @@ $B%5!<%P%k!<%H$+$i$NAjBP%Q%9$H$7$F07$o$l$^$9!#(B</p> <p>$B$3$N%m%0$O;R%W%m%;%9$,<B9T$5$l$F$$$k%f!<%6$H$7$F%*!<%W%s$5$l$^$9!#(B - $B$9$J$o$A!"(B<a href="core.html#User">User</a> $B%G%#%l%/%F%#%V$G;XDj$5$l$?(B + $B$9$J$o$A!"(B<a href="core.html#user">User</a> $B%G%#%l%/%F%#%V$G;XDj$5$l$?(B $B%f!<%6$G$9!#$3$l$O!"%9%/%j%W%H%m%0$,=q$+$l$k%G%#%l%/%H%j$,$=$N%f!<%6$G(B $B=q$-9~$_2DG=$+!"%9%/%j%W%H%U%!%$%k$,<jF0$G:n@.$5$l!"$=$N%f!<%6$G(B $B=q$-9~$_2DG=$K$J$C$F$$$kI,MW$,$"$k$H$$$&$3$H$G$9!#%9%/%j%W%H%m%0$r(B diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_dir.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_dir.html.ja.jis index 959208cba45..cd47bba8427 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_dir.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_dir.html.ja.jis @@ -111,7 +111,7 @@ </blockquote> $B$H$7$?>l9g!"(B<code>index.html</code> $B$H(B <code>index.txt</code> $B$N$I$A$i$b%G%#%l%/%H%jFb$GB8:_$7$J$$>l9g!"(BCGI $B%9%/%j%W%H(B - <code>/cgi-bin/index.pl</code> $B$,<B9T$5$l$^$9!#(B</p> + <code>/cgi-bin/index.pl</code> $B$,<B9T$5$l$^$9!#(B <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_env.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_env.html.ja.jis index 730ad5242b6..b36df77da35 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_env.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_env.html.ja.jis @@ -30,7 +30,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> env_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.1 $B0J9_$G;HMQ2DG=!#(B</p> @@ -70,7 +70,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_env<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> PassEnv $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#%G%#%l%/%H%j!"(B.htaccess $B$G$N;HMQ$O(B Apache 1.3.7 $B0J9_$G;HMQ2DG=!#(B<br /> @@ -96,7 +96,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_env<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> SetEnv $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#%G%#%l%/%H%j!"(B.htaccess $B$G$N;HMQ$O(B Apache 1.3.7 $B0J9_$G;HMQ2DG=!#(B<br /> @@ -122,7 +122,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_env<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> UnsetEnv $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#%G%#%l%/%H%j!"(B.htaccess $B$G$N;HMQ$O(B Apache 1.3.7 $B0J9_$G;HMQ2DG=!#(B<br /> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html b/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html index 366173a7a88..c930f62bc24 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html @@ -30,7 +30,7 @@ <a href="module-dict.html#ModuleIdentifier" rel="Help"><strong>Module Identifier:</strong></a> imap_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="Help"><strong>Compatibility:</strong></a> Available in Apache 1.1 and later.</p> @@ -230,8 +230,8 @@ used as the text:<br /> <code><a HREF="http://foo.com/">http://foo.com</a></code><br /> - It is impossible to escape double quotes within this - text.</dd> + If you want to use double quotes within this text, you have to + write them as <code>&quot;</code>.</dd> </dl> <h2>Example Mapfile</h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_include.html b/usr.sbin/httpd/htdocs/manual/mod/mod_include.html index d77d9e1d43e..905188fcf8d 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_include.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_include.html @@ -401,6 +401,11 @@ Options +Includes <dd>The last modification date of the document requested by the user.</dd> + + <dt>USER_NAME</dt> + + <dd>Contains the owner of the file which included it.</dd> + </dl> <h2>Variable Substitution</h2> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.en b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.en index 4a0b92a73ab..7aa1a13c4b1 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.en @@ -31,7 +31,7 @@ <a href="module-dict.html#ModuleIdentifier" rel="Help"><strong>Module Identifier:</strong></a> info_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="Help"><strong>Compatibility:</strong></a> Available in Apache 1.1 and later.</p> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.html b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.html index 8bfc88ba822..9175e2ed4da 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.html @@ -33,7 +33,7 @@ <a href="module-dict.html#ModuleIdentifier" rel="Help"><strong>Module Identifier:</strong></a> info_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="Help"><strong>Compatibility:</strong></a> Available in Apache 1.1 and later.</p> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.ja.jis index 48362b3fc6d..e9cfdfcb166 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html.ja.jis @@ -7,7 +7,7 @@ <title>Apache module mod_info</title> </head> - <!-- English revision: 1.12 --> + <!-- English revision: 1.14 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -31,7 +31,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> info_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.1 $B0J9_$G;HMQ2DG=!#(B</p> @@ -55,7 +55,7 @@ SetHandler server-info $B%G%#%l%/%F%#%V$NCf$K(B <a href="core.html#limit"><Limit></a> $B@a$rF~$l$k$H$h$$$+$b$7$l$^$;$s!#(B - <p>$B0lC6@_Dj$9$k$H!"(B<tt>http://your.host.dom/server-info</tt> + <p>$B$$$C$?$s@_Dj$9$k$H!"(B<tt>http://your.host.dom/server-info</tt> $B$r%"%/%;%9$9$k$H%5!<%P$N>pJs$rF@$i$l$k$h$&$K$J$j$^$9!#(B</p> <blockquote> @@ -69,11 +69,19 @@ SetHandler server-info $B%G%#%l%/%F%#%V$r;2>H$7$F$/$@$5$$(B)$B!#(B $B$G$J$1$l$P!"%G%#%l%/%F%#%V$N@_Dj$OI=<($5$l$^$;$s!#(B</strong></p> <p><strong><samp>mod_info</samp> - $B$,%5!<%P$KAH$_9~$^$l$F$$$k>l9g$O!"%G%#%l%/%H%j(B<em>$BKh(B</em>$B$N%U%!%$%k(B + $B$,%5!<%P$KAH$_9~$^$l$F$$$k>l9g$O!"%G%#%l%/%H%j(B<em>$B$4$H(B</em>$B$N%U%!%$%k(B ($BNc$($P!"(B<samp>.htaccess</samp>) $B$r4^$`$9$Y$F$N@_Dj%U%!%$%k$G(B $B%O%s%I%i$r;HMQ2DG=$G$"$k$H$$$&$3$H$K$bCm0U$7$F$/$@$5$$!#(B $B$3$l$O!"$"$J$?$N%5%$%H$G$O%;%-%e%j%F%#$K4XO"$7$?LdBj$,$"$k$+$b$7$l$^$;$s!#(B </strong></p> + + <p>$BFC$K!"$3$N%b%8%e!<%k$O%7%9%F%`%Q%9!"%f!<%6L>(B/$B%Q%9%o!<%I!"(B + $B%G!<%?%Y!<%9L>$J$I!"B>$N(B Apache $B%b%8%e!<%k$N@_Dj%G%#%l%/%F%#%V$+$i(B + $B?5=E$K07$o$l$k$Y$->pJs$rO3$i$7$F$7$^$&2DG=@-$,$"$j$^$9!#(B + $B$3$N%b%8%e!<%k$,$=$N$h$&$KF0:n$9$k$?$a!">pJs$NN.=P$rKI$0J}K!$O$"$j$^$;$s!#(B + $B$G$9$+$i!"$3$N%b%8%e!<%k$O$-$A$s$H%"%/%;%9@)8f$5$l$?4D6-$G$N$_(B + $BCm0U$7$F;H$C$F$/$@$5$$!#(B</p> + </blockquote> <hr /> @@ -89,7 +97,7 @@ SetHandler server-info rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Extension<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_info<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J9_!#(B diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_log_common.html b/usr.sbin/httpd/htdocs/manual/mod/mod_log_common.html index 66a52da7946..71992b7b0f4 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_log_common.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_log_common.html @@ -50,7 +50,7 @@ <dt>authuser</dt> - <dd>If the request was for an password protected document, + <dd>If the request was for a password protected document, then this is the userid used in the request.</dd> <dt>date</dt> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html b/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html index f27e1063915..31161b56b1f 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html @@ -118,7 +118,7 @@ <dt>`|' followed by a command</dt> <dd>A program to receive the referrer log information on its - standard input. Note the a new program will not be started + standard input. Note that a new program will not be started for a VirtualHost if it inherits the RefererLog from the main server.</dd> </dl> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.en b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.en index 680470b08a0..ef3c5415c26 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.en @@ -423,7 +423,7 @@ directive</h2> <a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> ForceType - <em>media-type</em><br /> + <em>media-type</em>|None<br /> <a href="directive-dict.html#Context" rel="Help"><strong>Context:</strong></a> directory, .htaccess<br /> @@ -448,6 +448,21 @@ <p>Note that this will override any filename extensions that might determine the media type.</p> + <p>You can override any <directive>ForceType</directive> setting + by using the value of <code>none</code>:</p> + +<pre> + # force all files to be image/gif: + <Location /images> + ForceType image/gif + </Location> + + # but normal mime-type associations here: + <Location /images/mixed> + ForceType none + </Location> +</pre> + <p><strong>See also</strong>: <a href="#addtype">AddType</a></p> @@ -459,7 +474,7 @@ rel="Help"><strong>Syntax:</strong></a> RemoveEncoding <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> directory, + rel="Help"><strong>Context:</strong></a> virtual host, directory, .htaccess<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> @@ -506,7 +521,7 @@ rel="Help"><strong>Syntax:</strong></a> RemoveHandler <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> directory, + rel="Help"><strong>Context:</strong></a> virtual host, directory, .htaccess<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> @@ -548,7 +563,7 @@ rel="Help"><strong>Syntax:</strong></a> RemoveType <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> directory, + rel="Help"><strong>Context:</strong></a> virtual host, directory, .htaccess<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> @@ -588,7 +603,7 @@ directive</h2> <a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> SetHandler - <em>handler-name</em><br /> + <em>handler-name</em>|None<br /> <a href="directive-dict.html#Context" rel="Help"><strong>Context:</strong></a> directory, .htaccess<br /> @@ -623,6 +638,9 @@ </Location> </pre> + <p>You can override an earlier defined <code>SetHandler</code> + directive by using the value <code>None</code>.</p> + <p><strong>See also</strong>: <a href="#addhandler">AddHandler</a></p> <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.html b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.html index 5b2da0a774b..810ee5d3e0f 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.html @@ -425,7 +425,7 @@ directive</h2> <a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> ForceType - <em>media-type</em><br /> + <em>media-type</em>|None<br /> <a href="directive-dict.html#Context" rel="Help"><strong>Context:</strong></a> directory, .htaccess<br /> @@ -450,6 +450,21 @@ <p>Note that this will override any filename extensions that might determine the media type.</p> + <p>You can override any <directive>ForceType</directive> setting + by using the value of <code>none</code>:</p> + +<pre> + # force all files to be image/gif: + <Location /images> + ForceType image/gif + </Location> + + # but normal mime-type associations here: + <Location /images/mixed> + ForceType none + </Location> +</pre> + <p><strong>See also</strong>: <a href="#addtype">AddType</a></p> @@ -461,7 +476,7 @@ rel="Help"><strong>Syntax:</strong></a> RemoveEncoding <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> directory, + rel="Help"><strong>Context:</strong></a> virtual host, directory, .htaccess<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> @@ -508,7 +523,7 @@ rel="Help"><strong>Syntax:</strong></a> RemoveHandler <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> directory, + rel="Help"><strong>Context:</strong></a> virtual host, directory, .htaccess<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> @@ -550,7 +565,7 @@ rel="Help"><strong>Syntax:</strong></a> RemoveType <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> directory, + rel="Help"><strong>Context:</strong></a> virtual host, directory, .htaccess<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> @@ -590,7 +605,7 @@ directive</h2> <a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> SetHandler - <em>handler-name</em><br /> + <em>handler-name</em>|None<br /> <a href="directive-dict.html#Context" rel="Help"><strong>Context:</strong></a> directory, .htaccess<br /> @@ -625,6 +640,9 @@ </Location> </pre> + <p>You can override an earlier defined <code>SetHandler</code> + directive by using the value <code>None</code>.</p> + <p><strong>See also</strong>: <a href="#addhandler">AddHandler</a></p> <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.ja.jis index 131cca441cf..eaf912c21c9 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html.ja.jis @@ -7,7 +7,7 @@ <title>Apache module mod_mime</title> </head> - <!-- English revision: 1.49 --> + <!-- English revision: 1.51 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -140,7 +140,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> AddCharset $B$O(B Apache 1.3.10 $B0J9_$G$N$_;HMQ2DG=!#(B @@ -243,7 +243,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> AddHandler $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#(B<br /> <p>AddHandler $B$O!"3HD%;R(B <em>extension</em> $B$r(B<a @@ -389,7 +389,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> DefaultLanguage $B$O(B Apache 1.3.4 $B0J9_$G$N$_;HMQ2DG=!#(B<br /> @@ -425,7 +425,7 @@ $B%G%#%l%/%F%#%V(B</h2> <a href="directive-dict.html#syntax" rel="help"><strong>$B9=J8(B:</strong></a> ForceType - <em>media-type</em><br /> + <em>media-type</em>|None<br /> <a href="directive-dict.html#context" rel="help"><strong>$B%3%s%F%-%9%H(B:</strong></a> $B%G%#%l%/%H%j!"(B.htaccess<br /> @@ -433,7 +433,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> ForceType $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#(B @@ -450,6 +450,23 @@ <p>$B$3$l$O!"%a%G%#%"%?%$%W$r7hDj$9$k$+$b$7$l$J$$$9$Y$F$N3HD%;R$r(B $B>e=q$-$9$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>$BCM$r(B <code>none</code> $B$K@_Dj$9$k$3$H$G!"(B + $B0JA0$N(B <directive>ForceType</directive> $B$N$9$Y$F$N@_Dj$r>e=q$-$9$k$3$H$b(B + $B$G$-$^$9(B:</p> + +<pre> + # force all files to be image/gif: + <Location /images> + ForceType image/gif + </Location> + + # but normal mime-type associations here: + <Location /images/mixed> + ForceType none + </Location> +</pre> + + <p><strong>$B;2>H(B</strong>: <a href="#addtype">AddType</a></p> <hr /> @@ -461,12 +478,12 @@ <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#context" rel="help"><strong>$B%3%s%F%-%9%H(B:</strong></a> - $B%G%#%l%/%H%j!"(B.htaccess<br /> + $B%P!<%A%c%k%[%9%H!"%G%#%l%/%H%j!"(B.htaccess<br /> <a href="directive-dict.html#status" rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> RemoveEncoding $B$O(B Apache 1.3.13 $B0J9_$G$N$_;HMQ2DG=!#(B @@ -508,12 +525,12 @@ <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#context" rel="help"><strong>$B%3%s%F%-%9%H(B:</strong></a> - $B%G%#%l%/%H%j!"(B.htaccess<br /> + $B%P!<%A%c%k%[%9%H!"%G%#%l%/%H%j!"(B.htaccess<br /> <a href="directive-dict.html#status" rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> RemoveHandler $B$O(B Apache 1.3.4 $B0J9_$G$N$_;HMQ2DG=!#(B @@ -550,12 +567,12 @@ <em>extension</em> [<em>extension</em>] ...<br /> <a href="directive-dict.html#context" rel="help"><strong>$B%3%s%F%-%9%H(B:</strong></a> - $B%G%#%l%/%H%j!"(B.htaccess<br /> + $B%P!<%A%c%k%[%9%H!"%G%#%l%/%H%j!"(B.htaccess<br /> <a href="directive-dict.html#status" rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> RemoveType $B$O(B Apache 1.3.13 $B0J9_$G$N$_;HMQ2DG=!#(B @@ -589,7 +606,7 @@ $B%G%#%l%/%F%#%V(B</h2> <a href="directive-dict.html#syntax" rel="help"><strong>$B9=J8(B:</strong></a> SetHandler - <em>handler-name</em><br /> + <em>handler-name</em>|None<br /> <a href="directive-dict.html#context" rel="help"><strong>$B%3%s%F%-%9%H(B:</strong></a> $B%G%#%l%/%H%j!"(B.htaccess<br /> @@ -597,7 +614,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_mime<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> SetHandler $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#(B @@ -624,6 +641,10 @@ </Location> </pre> + <p>$BCM$r(B <code>None</code> $B$K$9$k$3$H$G!"(B + $B0JA0$N(B <code>SetHandler</code> $B%G%#%l%/%F%#%V$NDj5A$r>e=q$-$9$k$3$H$,(B + $B$G$-$^$9!#(B</p> + <p><strong>$B;2>H(B</strong>: <a href="#addhandler">AddHandler</a></p> <hr /> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html b/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html index 09b867ae544..3c8721d73bf 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html @@ -31,7 +31,7 @@ <a href="module-dict.html#ModuleIdentifier" rel="Help"><strong>Module Identifier:</strong></a> mmap_static_module<br /> - <a href="module-dict.html#Compatability" + <a href="module-dict.html#Compatibility" rel="Help"><strong>Compatibility:</strong></a> Available in Apache 1.3 and later.</p> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html.ja.jis index 48b9b71f745..5e71a2be426 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html.ja.jis @@ -165,7 +165,7 @@ <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_negotiation<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> CacheNegotiatedDocs $B$O(B Apache 1.1 $B0J9_$G$N$_;HMQ2DG=!#(B<br /> <p>$B$3$N%G%#%l%/%F%#%V$,@_Dj$5$l$F$$$k$H!"%3%s%F%s%H%M%4%7%(!<%7%g%s(B diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html b/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html index dae61107da6..341426057cc 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html @@ -398,7 +398,8 @@ rel="Help"><strong>Syntax:</strong></a> RewriteOptions <em>Option</em><br /> <a href="directive-dict.html#Default" - rel="Help"><strong>Default:</strong></a> <em>None</em><br /> + rel="Help"><strong>Default:</strong></a> <code>RewriteOptions + MaxRedirects=10</code><br /> <a href="directive-dict.html#Context" rel="Help"><strong>Context:</strong></a> server config, virtual host, directory, .htaccess<br /> @@ -410,23 +411,32 @@ rel="Help"><strong>Module:</strong></a> mod_rewrite.c<br /> <a href="directive-dict.html#Compatibility" rel="Help"><strong>Compatibility:</strong></a> Apache - 1.2<br /> - + 1.2; <code>MaxRedirects</code> is available in Apache 1.3.28 and + later<br /> + <p>The <code>RewriteOptions</code> directive sets some special options for the current per-server or per-directory configuration. The <em>Option</em> strings can be one of the following:</p> - <ul> - <li>'<strong><code>inherit</code></strong>'<br /> - This forces the current configuration to inherit the - configuration of the parent. In per-virtual-server context - this means that the maps, conditions and rules of the main - server are inherited. In per-directory context this means - that conditions and rules of the parent directory's - <code>.htaccess</code> configuration are inherited.</li> - </ul> + <dl> + <dt><code>inherit</code></dt> + <dd>This forces the current configuration to inherit the + configuration of the parent. In per-virtual-server context + this means that the maps, conditions and rules of the main + server are inherited. In per-directory context this means + that conditions and rules of the parent directory's + <code>.htaccess</code> configuration are inherited.</dd> + + <dt><code>MaxRedirects=<var>number</var></code></dt> + <dd>In order to prevent endless loops of internal redirects + issued by per-directory <code>RewriteRule</code>s, + <code>mod_rewrite</code> aborts the request after reaching a + maximum number of such redirects and responds with an 500 Internal + Server Error. If you really need more internal redirects than 10 + per request, you may increase the default to the desired value.</dd> + </dl> <hr noshade="noshade" size="1" /> <h3><a id="RewriteLog" name="RewriteLog">RewriteLog</a></h3> @@ -462,7 +472,7 @@ <tr> <td><strong>Note</strong>: To disable the logging of rewriting actions it is not recommended to set - <em>Filename</em> to <code>/dev/null</code>, because + <em>file-path</em> to <code>/dev/null</code>, because although the rewriting engine does not then output to a logfile it still creates the logfile output internally. <strong>This will slow down the server with no advantage diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.en b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.en index 661f625f60b..a34a4d0c885 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.en @@ -63,18 +63,18 @@ <h2>Directives</h2> <ul> - <li><a href="#BrowserMatch">BrowserMatch</a></li> + <li><a href="#browsermatch">BrowserMatch</a></li> - <li><a href="#BrowserMatchNoCase">BrowserMatchNoCase</a></li> + <li><a href="#browsermatchnocase">BrowserMatchNoCase</a></li> - <li><a href="#SetEnvIf">SetEnvIf</a></li> + <li><a href="#setenvif">SetEnvIf</a></li> - <li><a href="#SetEnvIfNoCase">SetEnvIfNoCase</a></li> + <li><a href="#setenvifnocase">SetEnvIfNoCase</a></li> </ul> <hr /> <!-- the HR is part of the directive description --> - <h2><a id="BrowserMatch" name="BrowserMatch">BrowserMatch + <h2><a id="browsermatch" name="browsermatch">BrowserMatch directive</a></h2> <p><a href="directive-dict.html#Syntax" @@ -133,13 +133,13 @@ <p>Note that the regular expression string is <strong>case-sensitive</strong>. For case-INsensitive matching, see the <a - href="#BrowserMatchNoCase"><samp>BrowserMatchNoCase</samp></a> + href="#browsermatchnocase"><samp>BrowserMatchNoCase</samp></a> directive.</p> <p>The <samp>BrowserMatch</samp> and <samp>BrowserMatchNoCase</samp> directives are special cases of - the <a href="#SetEnvIf"><samp>SetEnvIf</samp></a> and <a - href="#SetEnvIfNoCase"><samp>SetEnvIfNoCase</samp></a> + the <a href="#setenvif"><samp>SetEnvIf</samp></a> and <a + href="#setenvifnocase"><samp>SetEnvIfNoCase</samp></a> directives. The following two lines have the same effect:</p> <pre> BrowserMatchNoCase Robot is_a_robot @@ -149,8 +149,8 @@ <hr /> <!-- the HR is part of the directive description --> - <h2><a id="BrowserMatchNoCase" - name="BrowserMatchNoCase">BrowserMatchNoCase directive</a></h2> + <h2><a id="browsermatchnocase" + name="browsermatchnocase">BrowserMatchNoCase directive</a></h2> <p><a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> BrowserMatchNoCase @@ -185,7 +185,7 @@ <p>The <samp>BrowserMatch</samp> and <samp>BrowserMatchNoCase</samp> directives are special cases of - the <a href="#SetEnvIf"><samp>SetEnvIf</samp></a> and <a + the <a href="#setenvif"><samp>SetEnvIf</samp></a> and <a href="#SetEnvIfNoCase"><samp>SetEnvIfNoCase</samp></a> directives. The following two lines have the same effect:</p> <pre> @@ -196,7 +196,7 @@ <hr /> <!-- the HR is part of the directive description --> - <h2><a id="SetEnvIf" name="SetEnvIf">SetEnvIf + <h2><a id="setenvif" name="setenvif">SetEnvIf directive</a></h2> <p><a href="directive-dict.html#Syntax" @@ -288,7 +288,7 @@ <hr /> <!-- the HR is part of the directive description --> - <h2><a id="SetEnvIfNoCase" name="SetEnvIfNoCase">SetEnvIfNoCase + <h2><a id="setenvifnocase" name="setenvifnocase">SetEnvIfNoCase directive</a></h2> <p><a href="directive-dict.html#Syntax" @@ -313,7 +313,7 @@ .htaccess files only supported with 1.3.13 and later</p> <p>The <samp>SetEnvIfNoCase</samp> is semantically identical to - the <a href="#SetEnvIf"><samp>SetEnvIf</samp></a> directive, + the <a href="#setenvif"><samp>SetEnvIf</samp></a> directive, and differs only in that the regular expression matching is performed in a case-insensitive manner. For example:</p> <pre> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.html b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.html index a75a51cbe85..2837e4619b9 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.html @@ -65,18 +65,18 @@ <h2>Directives</h2> <ul> - <li><a href="#BrowserMatch">BrowserMatch</a></li> + <li><a href="#browsermatch">BrowserMatch</a></li> - <li><a href="#BrowserMatchNoCase">BrowserMatchNoCase</a></li> + <li><a href="#browsermatchnocase">BrowserMatchNoCase</a></li> - <li><a href="#SetEnvIf">SetEnvIf</a></li> + <li><a href="#setenvif">SetEnvIf</a></li> - <li><a href="#SetEnvIfNoCase">SetEnvIfNoCase</a></li> + <li><a href="#setenvifnocase">SetEnvIfNoCase</a></li> </ul> <hr /> <!-- the HR is part of the directive description --> - <h2><a id="BrowserMatch" name="BrowserMatch">BrowserMatch + <h2><a id="browsermatch" name="browsermatch">BrowserMatch directive</a></h2> <p><a href="directive-dict.html#Syntax" @@ -135,13 +135,13 @@ <p>Note that the regular expression string is <strong>case-sensitive</strong>. For case-INsensitive matching, see the <a - href="#BrowserMatchNoCase"><samp>BrowserMatchNoCase</samp></a> + href="#browsermatchnocase"><samp>BrowserMatchNoCase</samp></a> directive.</p> <p>The <samp>BrowserMatch</samp> and <samp>BrowserMatchNoCase</samp> directives are special cases of - the <a href="#SetEnvIf"><samp>SetEnvIf</samp></a> and <a - href="#SetEnvIfNoCase"><samp>SetEnvIfNoCase</samp></a> + the <a href="#setenvif"><samp>SetEnvIf</samp></a> and <a + href="#setenvifnocase"><samp>SetEnvIfNoCase</samp></a> directives. The following two lines have the same effect:</p> <pre> BrowserMatchNoCase Robot is_a_robot @@ -151,8 +151,8 @@ <hr /> <!-- the HR is part of the directive description --> - <h2><a id="BrowserMatchNoCase" - name="BrowserMatchNoCase">BrowserMatchNoCase directive</a></h2> + <h2><a id="browsermatchnocase" + name="browsermatchnocase">BrowserMatchNoCase directive</a></h2> <p><a href="directive-dict.html#Syntax" rel="Help"><strong>Syntax:</strong></a> BrowserMatchNoCase @@ -187,7 +187,7 @@ <p>The <samp>BrowserMatch</samp> and <samp>BrowserMatchNoCase</samp> directives are special cases of - the <a href="#SetEnvIf"><samp>SetEnvIf</samp></a> and <a + the <a href="#setenvif"><samp>SetEnvIf</samp></a> and <a href="#SetEnvIfNoCase"><samp>SetEnvIfNoCase</samp></a> directives. The following two lines have the same effect:</p> <pre> @@ -198,7 +198,7 @@ <hr /> <!-- the HR is part of the directive description --> - <h2><a id="SetEnvIf" name="SetEnvIf">SetEnvIf + <h2><a id="setenvif" name="setenvif">SetEnvIf directive</a></h2> <p><a href="directive-dict.html#Syntax" @@ -290,7 +290,7 @@ <hr /> <!-- the HR is part of the directive description --> - <h2><a id="SetEnvIfNoCase" name="SetEnvIfNoCase">SetEnvIfNoCase + <h2><a id="setenvifnocase" name="setenvifnocase">SetEnvIfNoCase directive</a></h2> <p><a href="directive-dict.html#Syntax" @@ -315,7 +315,7 @@ .htaccess files only supported with 1.3.13 and later</p> <p>The <samp>SetEnvIfNoCase</samp> is semantically identical to - the <a href="#SetEnvIf"><samp>SetEnvIf</samp></a> directive, + the <a href="#setenvif"><samp>SetEnvIf</samp></a> directive, and differs only in that the regular expression matching is performed in a case-insensitive manner. For example:</p> <pre> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.ja.jis index adba6912f04..493573c25ee 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html.ja.jis @@ -7,7 +7,7 @@ <title>Apache module mod_setenvif</title> </head> - <!-- English revision: 1.18 --> + <!-- English revision: 1.19 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -31,7 +31,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> setenvif_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J9_$G;HMQ2DG=!#(B</p> @@ -92,7 +92,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_setenvif<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.2 $B0J>e(B ($B$3$N%G%#%l%/%F%#%V$O(B Apache 1.2 $B$G$O!":#$G$O(B obsolete $B$K$J$C$F$$$k(B mod_browser $B%b%8%e!<%k$K$"$j$^$7$?(B)$B!#(B.htaccess $B%U%!%$%k$G$N;HMQ$O(B @@ -167,7 +167,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_setenvif<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.2 $B0J>e(B ($B$3$N%G%#%l%/%F%#%V$O(B Apache 1.2 $B$G$O!":#$G$O(B obsolete $B$K$J$C$F$$$k(B mod_browser $B%b%8%e!<%k$K$"$j$^$7$?(B)$B!#(B.htaccess $B%U%!%$%k$G$N;HMQ$O(B @@ -214,7 +214,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_setenvif<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J>e!#(B Request_Protocol $B%-!<%o!<%I$H4D6-JQ?t$N%^%C%A$O(B 1.3.7 $B0J9_$G$N$_;HMQ2DG=!#(B.htaccess $B%U%!%$%k$G$N;HMQ$O(B @@ -306,7 +306,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_setenvif<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J>e!#(B Request_Protocol $B%-!<%o!<%I$H4D6-JQ?t$N%^%C%A$O(B 1.3.7 $B0J9_$G$N$_;HMQ2DG=!#(B.htaccess $B%U%!%$%k$G$N;HMQ$O(B diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.en b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.en index c1c4a74d1e4..4e81065380e 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.en +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.en @@ -185,6 +185,11 @@ name of the module, the LoadModule directive requires the exact filename, no assumption is made about the filename extension.</p> + + <p><strong>See also</strong>: <a + href="core.html#addmodule">AddModule</a> and <a + href="core.html#clearmodulelist">ClearModuleList</a></p> + <hr /> <h3 align="CENTER">Apache HTTP Server Version 1.3</h3> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.html b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.html index 3eaee69ba28..21b2835e39a 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.html @@ -187,6 +187,11 @@ name of the module, the LoadModule directive requires the exact filename, no assumption is made about the filename extension.</p> + + <p><strong>See also</strong>: <a + href="core.html#addmodule">AddModule</a> and <a + href="core.html#clearmodulelist">ClearModuleList</a></p> + <hr /> <h3 align="CENTER">Apache HTTP Server Version 1.3</h3> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.ja.jis index 4df232d945d..9bde47abaaa 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html.ja.jis @@ -7,7 +7,7 @@ <title>Apache module mod_so</title> </head> - <!-- English revision: 1.13--> + <!-- English revision: 1.14--> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -31,7 +31,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> so_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J9_$G;HMQ2DG=!#(B</p> @@ -162,7 +162,7 @@ <em>Module</em> $B$O%U%!%$%kCf$N(B <code>module</code> $B7?$N30ItJQ?t$NL>A0$G!"%b%8%e!<%k$N%I%-%e%a%s%H$K(B <a href="module-dict.html#moduleidentifier" - >$B%b%8%e!<%k<1JL;R(B</a>$B$H$7$F=q$+$l$F$$$k$b$N$G$9!#Nc(B + >$B%b%8%e!<%k<1JL;R(B</a>$B$H$7$F=q$+$l$F$$$k$b$N$G$9!#Nc(B (Unix $B$H(B Apache 1.3.15 $B0J9_$N(B Windows):</p> <blockquote> @@ -170,7 +170,7 @@ </blockquote> <p>$BNc(B (Apache 1.3.15 $B0JA0$N(B - Windows$B!"%5!<%I%Q!<%F%#%b%8%e!<%k$N0lIt(B):</p> + Windows, $B%5!<%I%Q!<%F%#%b%8%e!<%k$N0lIt(B):</p> <blockquote> <code>LoadModule foo_module modules/ApacheModuleFoo.dll<br /> @@ -192,5 +192,10 @@ <a href="./"><img src="../images/index.gif" alt="Index" /></a> <a href="../"><img src="../images/home.gif" alt="Home" /></a> + + <p><strong>$B;2>H(B</strong>: <a + href="core.html#addmodule">AddModule</a> $B$H(B <a + href="core.html#clearmodulelist">ClearModuleList</a></p> + </body> </html> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html.ja.jis index 5293ad9eaae..c209f83fcdc 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html.ja.jis @@ -32,7 +32,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> speling_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J9_$G;HMQ2DG=!#(BApache 1.1 $B0J9_$G$O30It%b%8%e!<%k$H$7$F;HMQ2DG=!#(B </p> @@ -46,8 +46,9 @@ $B%j%/%(%9%H$K9g$&%I%-%e%a%s%H$r8+$D$1$h$&$H$9$k$3$H$K$h$j$3$NLdBj$N(B $B2r7h$r;n$_$^$9!#$3$N%b%8%e!<%k$O%j%/%(%9%H$5$l$?%G%#%l%/%H%j$K$"$k(B $B$=$l$>$l$N%I%-%e%a%s%H$NL>A0$H!"%j%/%(%9%H$5$l$?%I%-%e%a%s%H$NL>A0$H$r(B - <strong>$BBgJ8;z>.J8;z$N6hJL$rL5;k$7(B</strong>$B!"(B<strong>$B0lJ8;z$^$G$N(B - $BDV$j$N4V0c$$(B</strong> ($BJ8;z$NA^F~(B/$B>JN,(B/$BNY9g$&J8;z$NCV49!"4V0c$C$?J8;z(B) + <strong>$BBgJ8;z>.J8;z$N6hJL$rL5;k$7(B</strong>$B!"(B + <strong>$B0lJ8;z$^$G$NDV$j$N4V0c$$(B</strong> + ($BJ8;z$NA^F~(B/$B>JN,(B/$BNY9g$&J8;z$NCV49!"4V0c$C$?J8;z(B) $B$r5v2D$7$FHf3S$9$k$3$H$K$h$j!"L\E*$rC#@.$7$h$&$H$7$^$9!#(B $B$3$NJ}K!$G%j%/%(%9%H$K9g$&%I%-%e%a%s%H$N0lMw$,:n@.$5$l$^$9!#(B</p> @@ -91,7 +92,7 @@ rel="help"><strong>$B%9%F!<%?%9(B:</strong></a> Base<br /> <a href="directive-dict.html#module" rel="help"><strong>$B%b%8%e!<%k(B:</strong></a> mod_speling<br /> - <a href="directive-dict.html#compatibility" + <a href="directive-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> CheckSpelling $B$O(B Apache 1.1 $B$G$O30It$N%b%8%e!<%k$H$7$F;HMQ2DG=$G$7$?$,!"(B $BBgJ8;z>.J8;z$N0c$$$r=$@5$9$k5!G=$N$_$G$7$?!#(BApache 1.3 $B$G$O(B @@ -105,8 +106,8 @@ <ul> <li>$BF1;~$K$?$/$5$s$NDV$j$ND{@5$r9T$J$o$J$1$l$P$J$i$J$$$H$-$O!"(B - $B$=$N$?$a$K9T$J$o$l$k%G%#%l%/%H%j$N%9%-%c%s$,%5!<%P$N@-G=$K(B - $B1F6A$rM?$($^$9!#(B</li> + $B$=$N$?$a$K9T$J$o$l$k%G%#%l%/%H%j$N%9%-%c%s$,(B + $B%5!<%P$N@-G=$K1F6A$rM?$($^$9!#(B</li> <li>$B%I%-%e%a%s%H$NCf$KDV$j$N!VD{@5!W$K$h$j(B $B0U?^$;$:9g$C$F$7$^$&$h$&$J=EMW$J%U%!%$%k$,$J$$$h$&$K$7$F$/$@$5$$!#(B diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html.ja.jis index 9a739933e94..8a28c1112f6 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html.ja.jis @@ -31,7 +31,7 @@ <a href="module-dict.html#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> unique_id_module<br /> - <a href="module-dict.html#compatibility" + <a href="module-dict.html#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> Apache 1.3 $B0J9_$G;HMQ2DG=!#(B</p> @@ -68,7 +68,7 @@ $B$3$N1'Ch$NCf$G$=$l$>$l$N%j%/%(%9%H$K0l0U$J<1JL;R$r@8@.$G$-$k$3$H$r<($7$^$9!#(B </p> - <p>$B%/%i%9%?$K$"$k%^%7%s$O0J2<$NMW5a$r8+$?$5$J$1$l$P$J$j$^$;$s!#(B + <p>$B%/%i%9%?$K$"$k%^%7%s$O0J2<$NMW5a$rK~$?$5$J$1$l$P$J$j$^$;$s!#(B ($B%^%7%s$,0l$D$@$1$@$H$7$F$b!"(BNTP $B$G;~7W$r9g$o$;$kJ}$,NI$$$G$9!#(B)</p> <ul> diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html.ja.jis index 5e382b978d4..93dfcc23d5d 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html.ja.jis @@ -1,7 +1,8 @@ +<?xml version="1.0" encoding="iso-2022-jp"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <title>Apache module mod_userdir</title> @@ -18,7 +19,7 @@ </div> - <h1 align="CENTER">mod_userdir $B%b%8%e!<%k(B</h1> + <h1 align="center">mod_userdir $B%b%8%e!<%k(B</h1> <p>$B$3$N%b%8%e!<%k$O!"%f!<%6$N%[!<%`%G%#%l%/%H%j$K%"%/%;%9$9$k5!G=$rDs6!$7$^$9(B</p> @@ -47,7 +48,7 @@ rel="Help"><strong>Default:</strong></a> <code>UserDir public_html</code><br /> <a href="directive-dict.html#Context" - rel="Help"><strong>Context:</strong></a> $B%5!<%P@_Dj%U%!%$%k(B, $B%P!<%A%c%k%[%9%H(B<br /> + rel="Help"><strong>Context:</strong></a> $B%5!<%P@_Dj%U%!%$%k!"(B $B%P!<%A%c%k%[%9%H(B<br /> <a href="directive-dict.html#Status" rel="Help"><strong>Status:</strong></a> Base<br /> <a href="directive-dict.html#Module" @@ -58,7 +59,8 @@ <samp>enabled</samp> $B$d(B <samp>disabled</samp> $B$H$$$&%-!<%o!<%I$N5-=R5Z$S!"(B $B%f!<%6L>$NNs5s$K4X$7$F$O!"(BApache 1.3 $B0J9_$G$N$_BP1~$7$F$$$^$9!#(B - <p>UserDir $B%G%#%l%/%F%#%V$O!"%f!<%6$N%I%-%e%a%s%H$KBP$9$kMW5a$,$"$C$?:]$K;HMQ$9$k!"(B + <p>UserDir $B%G%#%l%/%F%#%V$O!"(B + $B%f!<%6$N%I%-%e%a%s%H$KBP$9$kMW5a$,$"$C$?:]$K;HMQ$9$k!"(B $B%f!<%6$N%[!<%`%G%#%l%/%H%j$NCf$N<B:]$N%G%#%l%/%H%j$NL>A0$r;XDj$7$^$9!#(B <em>directory-filename</em> $B$K$O!"0J2<$N$I$l$+$r;XDj$7$^$9!#(B</p> @@ -66,23 +68,30 @@ <li>$B%G%#%l%/%H%jL>$+!"0J2<$K=R$Y$k7A<0$N%Q%?!<%s!#(B</li> <li><samp>disabled</samp> $B$H$$$&%-!<%o!<%I!#(B<br /> - $B$3$N@_Dj$O!"(B<samp>enabled</samp> $B%-!<%o!<%I(B ($B0J2<;2>H(B) $B$K$*$$$F;XDj$5$l$?%f!<%60J30!"(B - <em>$BA4$F(B</em>$B$N%f!<%6L>$r%G%#%l%/%H%j$KJQ49$7$J$$$h$&$K$7$^$9!#(B</li> + $B$3$N@_Dj$O!"(B<samp>enabled</samp> $B%-!<%o!<%I(B ($B0J2<;2>H(B) + $B$K$*$$$F;XDj$5$l$?%f!<%60J30!"(B + <em>$B$9$Y$F(B</em>$B$N%f!<%6L>$r%G%#%l%/%H%j$KJQ49$7$J$$$h$&$K$7$^$9!#(B</li> <li><samp>disabled</samp> $B$H$$$&%-!<%o!<%I$H!"(B $B$=$N8e$K%9%Z!<%96h@Z$j$G%f!<%6L>$rNs5s!#(B<br /> - $B;XDj$5$l$?%f!<%6$O!"(B<samp>enabled</samp> $B$K$*$$$F5-=R$,$5$l$F$$$?$H$7$F$b!"(B + $B;XDj$5$l$?%f!<%6$O!"(B<samp>enabled</samp> + $B$K$*$$$F5-=R$,$5$l$F$$$?$H$7$F$b!"(B $B%G%#%l%/%H%j$X$NJQ49$,(B<em>$B$5$l$J$/(B</em>$B$J$j$^$9!#(B</li> - <li><samp>enabled</samp> $B$H$$$&%-!<%o!<%I$H!"%9%Z!<%96h@Z$j$G%f!<%6L>$rNs5s(B<br /> + <li><samp>enabled</samp> + $B$H$$$&%-!<%o!<%I$H!"%9%Z!<%96h@Z$j$G%f!<%6L>$rNs5s(B<br /> $B;XDj$5$l$?%f!<%6$O!"JQ49$,$5$l$J$$$h$&$K@_Dj$5$l$F$$$?$H$7$F$b!"(B $B%G%#%l%/%H%j$X$NJQ49$r9T$$$^$9!#(B - $B$?$@$7!"(B<samp>disabled</samp> $B$K$*$$$FL@5-$5$l$F$$$k>l9g$K$O!"JQ49$,$J$5$l$^$;$s!#(B</li> + $B$?$@$7!"(B<samp>disabled</samp> + $B$K$*$$$FL@5-$5$l$F$$$k>l9g$K$O!"JQ49$,$J$5$l$^$;$s!#(B</li> </ul> - <p><samp>enabled</samp> $B$d(B <samp>disabled</samp> $B$H$$$C$?%-!<%o!<%I$GL5$$>l9g$K$O!"(B - $B%U%!%$%kL>$N%Q%?!<%s$d$H$7$F07$o$l!"L>A0$+$i%G%#%l%/%H%j$X$NJQ49$r;XDj$9$k$3$H$,$G$-$^$9!#(B - <code>http://www.foo.com/~bob/one/two.html</code> $B$X$N(BURL$B$N>l9g$NJQ49$K$D$$$F8+$F$_$^$9!#(B</p> + <p><samp>enabled</samp> $B$d(B <samp>disabled</samp> + $B$H$$$C$?%-!<%o!<%I$G$J$$>l9g$K$O!"(B + $B%U%!%$%kL>$N%Q%?!<%s$H$7$F07$o$l!"(B + $BL>A0$+$i%G%#%l%/%H%j$X$NJQ49$r;XDj$9$k$3$H$,$G$-$^$9!#(B + <code>http://www.foo.com/~bob/one/two.html</code> $B$X$N(B URL + $B$N>l9g$NJQ49$K$D$$$F8+$F$_$^$9!#(B</p> <pre> UserDir public_html -> ~bob/public_html/one/two.html @@ -90,7 +99,8 @@ UserDir /usr/web -> /usr/web/bob/one/two.html UserDir /home/*/www -> /home/bob/www/one/two.html </pre> - <p>$B0J2<$N$h$&$K%G%#%l%/%F%#%V$r@_Dj$9$k$H!"%/%i%$%"%s%H$X$O%j%@%$%l%/%H$,Aw=P$5$l$^$9!#(B</p> + <p>$B0J2<$N$h$&$K%G%#%l%/%F%#%V$r@_Dj$9$k$H!"(B + $B%/%i%$%"%s%H$X$O%j%@%$%l%/%H$,Aw=P$5$l$^$9!#(B</p> <pre> UserDir http://www.foo.com/users -> http://www.foo.com/users/bob/one/two.html UserDir http://www.foo.com/*/usr -> http://www.foo.com/bob/usr/one/two.html @@ -99,26 +109,30 @@ UserDir http://www.foo.com/~*/ -> http://www.foo.com/~bob/one/two.html <blockquote> <strong> - $B$3$N%G%#%l%/%F%#%V$rMxMQ$9$k:]!"(B<samp>"UserDir ./"</samp> $B$H$$$C$?@_Dj$r$9$k$H!"(B - <samp>"/~root"</samp> $B$O(B <samp>"/"</samp> $B$K%^%C%T%s%0$5$l$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B + $B$3$N%G%#%l%/%F%#%V$rMxMQ$9$k:]!"(B<samp>"UserDir ./"</samp> + $B$H$$$C$?@_Dj$r$9$k$H!"(B<samp>"/~root"</samp> $B$O(B <samp>"/"</samp> + $B$K%^%C%T%s%0$5$l$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B $B$3$l$OHs>o$KK>$^$7$/$"$j$^$;$s!#(B - Apache 1.3 $B0J9_$rMxMQ$7$F$$$k$N$G$"$l$P!"(B"UserDir disabled root" $B$H$$$&5-=R$r@_Dj%U%!%$%kCf$K4^$a$k$3$H$r!"(B - $B6/$/?d>)$7$^$9!#(B + Apache 1.3 $B0J9_$rMxMQ$7$F$$$k$N$G$"$l$P!"(B"UserDir disabled root" + $B$H$$$&5-=R$r@_Dj%U%!%$%kCf$K4^$a$k$3$H$r6/$/?d>)$7$^$9!#(B <a href="core.html#directory"><Directory></a> $B%G%#%l%/%F%#%V$d!"(B - <a href="../misc/security_tips.html">$B%;%-%e%j%F%#$K4X$9$k3P=q(B</a>$B$b;2>H$7$F$/$@$5$$!#(B</strong> + <a href="../misc/security_tips.html">$B%;%-%e%j%F%#$K4X$9$k3P=q(B</a> + $B$b;2>H$7$F$/$@$5$$!#(B</strong> </blockquote> <p>$B$=$NB>$N@_DjNc(B:</p> -<p>$B>.?t$N%f!<%6$K$O(B <code>UserDir</code> $B%G%#%l%/%H%j$rMxMQ$5$;$k$b$N$N!";D$j$N%f!<%6$K$O$5$;$?$/$J$$>l9g(B:</p> +<p>$B>.?t$N%f!<%6$K$O(B <code>UserDir</code> +$B%G%#%l%/%H%j$rMxMQ$5$;$k$b$N$N!";D$j$N%f!<%6$K$O$5$;$?$/$J$$>l9g(B:</p> <pre> UserDir disabled UserDir enabled user1 user2 user3 </pre> -<p>$BBgItJ,$N%f!<%6$K$O(B <code>UserDir</code> $B%G%#%l%/%H%j$rMxMQ$5$;!"0lIt$N%f!<%6$N$_L58z$K$9$k>l9g(B:</p> +<p>$BBgItJ,$N%f!<%6$K$O(B <code>UserDir</code> +$B%G%#%l%/%H%j$rMxMQ$5$;!"0lIt$N%f!<%6$N$_L58z$K$9$k>l9g(B:</p> <pre> UserDir enabled @@ -133,4 +147,3 @@ UserDir disabled user4 user5 user6 </body> </html> - diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html b/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html index 440fb5b232e..9dbb3fef431 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html +++ b/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html @@ -51,8 +51,12 @@ <li><a href="#cookieexpires">CookieExpires</a></li> + <li><a href="#cookieformat">CookieFormat</a></li> + <li><a href="#cookiename">CookieName</a></li> + <li><a href="#cookieprefix">CookiePrefix</a></li> + <li><a href="#cookiestyle">CookieStyle</a></li> <li><a href="#cookietracking">CookieTracking</a></li> @@ -164,6 +168,29 @@ time late in the year "37". current browser session.</p> <hr /> + <h2><a id="cookieformat" + name="cookieformat">CookieFormat</a> directive</h2> + <a href="directive-dict.html#Syntax" + rel="Help"><strong>Syntax:</strong></a> CookieFormat + <em>Normal | Compact</em><br /> + <a href="directive-dict.html#Context" + rel="Help"><strong>Context:</strong></a> server config, virtual host, directory, + .htaccess<br /> + <a href="directive-dict.html#Status" + rel="Help"><strong>Status:</strong></a> optional<br /> + <a href="directive-dict.html#Module" + rel="Help"><strong>Module:</strong></a> mod_usertrack <a + href="directive-dict.html#Compatibility" + rel="Help"><strong>Compatibility:</strong></a> Apache 1.3.28 + and later + + <p>When used, this directive determines whether the cookie + used for user tracking is created using the default ("normal") + format (eg: decimal values for items like the PID) or + using a more compact format (eg: hexidecimal values).</p> + + <hr /> + <h2><a id="cookiename" name="cookiename">CookieName</a> directive</h2> <a href="directive-dict.html#Syntax" @@ -191,6 +218,29 @@ time late in the year "37". Valid characters include A-Z, a-z, 0-9, "_", and "-".</p> <hr /> + <h2><a id="cookieprefix" + name="cookieprefix">CookiePrefix</a> directive</h2> + <a href="directive-dict.html#Syntax" + rel="Help"><strong>Syntax:</strong></a> CookiePrefix + <em>"string"</em><br /> + <a href="directive-dict.html#Context" + rel="Help"><strong>Context:</strong></a> server config, virtual host, directory, + .htaccess<br /> + <a href="directive-dict.html#Status" + rel="Help"><strong>Status:</strong></a> optional<br /> + <a href="directive-dict.html#Module" + rel="Help"><strong>Module:</strong></a> mod_usertrack <a + href="directive-dict.html#Compatibility" + rel="Help"><strong>Compatibility:</strong></a> Apache 1.3.28 + and later + + <p>When used, this directive allows for the <em>"string"</em> + to be prepended to the user tracking cookie. Care must be + taken not to prepend a string that would result in a bogus + cookie.</p> + + <hr /> + <h2><a id="cookiestyle" name="cookiestyle">CookieStyle</a> directive</h2> <a href="directive-dict.html#Syntax" diff --git a/usr.sbin/httpd/htdocs/manual/mod/module-dict.html.ja.jis b/usr.sbin/httpd/htdocs/manual/mod/module-dict.html.ja.jis index ba47be9c99c..1526b52460c 100644 --- a/usr.sbin/httpd/htdocs/manual/mod/module-dict.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/mod/module-dict.html.ja.jis @@ -32,7 +32,7 @@ <a href="#moduleidentifier" rel="help"><strong>$B%b%8%e!<%k<1JL;R(B:</strong></a> <em>module-identifier</em><br /> - <a href="#compatibility" + <a href="#Compatibility" rel="help"><strong>$B8_49@-(B:</strong></a> <em>compatibility notes</em></dd> </dl> @@ -48,7 +48,7 @@ <li><a href="#moduleidentifier">$B%b%8%e!<%k<1JL;R(B</a></li> - <li><a href="#compatibility">$B8_49@-(B</a></li> + <li><a href="#Compatibility">$B8_49@-(B</a></li> </ul> <hr /> @@ -63,7 +63,7 @@ <dt><strong>Base</strong></dt> <dd>$B%9%F!<%?%9$,(B "Base" - $B$N%b%8%e!<%k$O!"%G%U%)%k%H$G%3%s%Q%$%k$5$l$F$o$6$o$6@_Dj$+$i(B + $B$N%b%8%e!<%k$O!"%G%U%)%k%H$G%3%s%Q%$%k$5$l$F!"$o$6$o$6@_Dj$+$i(B $B%b%8%e!<%k$r:o=|$7$F$$$J$$8B$j!"DL>o$OMxMQ2DG=$G$9!#(B </dd> @@ -109,7 +109,7 @@ </p> <hr /> - <h2><a id="compatibility" name="compatibility">$B8_49@-(B</a></h2> + <h2><a id="Compatibility" name="Compatibility">$B8_49@-(B</a></h2> <p>$B$"$k%b%8%e!<%k$,(B Apache $B%P!<%8%g%s(B 1 $B$NG[I[$K4^$^$l$F$$$J$+$C$?>l9g!"(B diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.en b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.en index 93ecc75108d..7adbea08157 100644 --- a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.en +++ b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.en @@ -226,7 +226,7 @@ APACI installs the Apache C header files together with the <code>apxs</code> tool.</dd> - <dt><a href="install.html#install"><strong>Default Apache + <dt><a href="install.html#installing"><strong>Default Apache directory path changed to <code>/usr/local/apache/</code></strong></a><br /> </dt> @@ -307,9 +307,9 @@ </dt> <dd>The addition of <a - href="mod/mod_setenvif.html#SetEnvIf"><code>SetEnvIf</code></a> + href="mod/mod_setenvif.html#setenvif"><code>SetEnvIf</code></a> and <a - href="mod/mod_setenvif.html#SetEnvIfNoCase"><code>SetEnvIfNoCase</code></a>. + href="mod/mod_setenvif.html#setenvifnocase"><code>SetEnvIfNoCase</code></a>. These allow you to set environment variables for server and CGI use based upon attributes of the request.</dd> @@ -459,7 +459,7 @@ <li>Starting with 1.3.15, the server will satisfy directory requests with the cache controls ETag and LastModified, if IndexOptions includes the <a - href="mod/mod_autoindex.html#trackmodified"><samp>TrackModified</samp></a> + href="mod/mod_autoindex.html#indexoptions:trackmodified"><samp>TrackModified</samp></a> directive. The server will not need to generate the listing if the client determines the request has not changed, improving performance. Due to its experimental diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.html b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.html index 3a08fa12ca1..fa4f96d4892 100644 --- a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.html +++ b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.html @@ -228,7 +228,7 @@ APACI installs the Apache C header files together with the <code>apxs</code> tool.</dd> - <dt><a href="install.html#install"><strong>Default Apache + <dt><a href="install.html#installing"><strong>Default Apache directory path changed to <code>/usr/local/apache/</code></strong></a><br /> </dt> @@ -309,9 +309,9 @@ </dt> <dd>The addition of <a - href="mod/mod_setenvif.html#SetEnvIf"><code>SetEnvIf</code></a> + href="mod/mod_setenvif.html#setenvif"><code>SetEnvIf</code></a> and <a - href="mod/mod_setenvif.html#SetEnvIfNoCase"><code>SetEnvIfNoCase</code></a>. + href="mod/mod_setenvif.html#setenvifnocase"><code>SetEnvIfNoCase</code></a>. These allow you to set environment variables for server and CGI use based upon attributes of the request.</dd> @@ -461,7 +461,7 @@ <li>Starting with 1.3.15, the server will satisfy directory requests with the cache controls ETag and LastModified, if IndexOptions includes the <a - href="mod/mod_autoindex.html#trackmodified"><samp>TrackModified</samp></a> + href="mod/mod_autoindex.html#indexoptions:trackmodified"><samp>TrackModified</samp></a> directive. The server will not need to generate the listing if the client determines the request has not changed, improving performance. Due to its experimental diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.ja.jis b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.ja.jis index 230f806ae33..2a364681188 100644 --- a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html.ja.jis @@ -7,7 +7,7 @@ <title>New features with Apache 1.3</title> </head> - <!-- English revision: 1.88 --> + <!-- English revision: 1.91 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -226,7 +226,7 @@ $B$3$l$rC#@.$9$k$?$a$K!"(BAPACI $B$O(B Apache $B$N(B C $B$N%X%C%@%U%!%$%k$r(B <code>apxs</code> $B$H0l=o$K%$%s%9%H!<%k$7$^$9!#(B</dd> - <dt><a href="install.html#install"><strong>Apache + <dt><a href="install.html#installing"><strong>Apache $B$N%G%U%)%k%H%G%#%l%/%H%j%Q%9$r(B <code>/usr/local/apache/</code> $B$XJQ99(B</strong></a><br /> </dt> @@ -458,7 +458,7 @@ $B$HF1$88z2L$K$J$k$h$&$K$J$j$^$7$?!#(B</li> <li>1.3.15 $B$+$i$O!"(BIndexOptions $B$K(B <a - href="mod/mod_autoindex.html#trackmodified"><samp>TrackModified</samp + href="mod/mod_autoindex.html#indexoptions:trackmodified"><samp>TrackModified</samp ></a> $B%G%#%l%/%F%#%V$,4^$^$l$F$$$k>l9g$O!"%5!<%P$O%G%#%l%/%H%j$N(B $B%j%/%(%9%H$r<u$1$?$H$-$K!"%-%c%C%7%e$r@)8f$9$k(B ETag $B$H(B LastModified $B$rIU$1$FJV$7$^$9!#$=$N%j%/%(%9%H$,JQ99$5$l$F$$$J$$$H%/%i%$%"%s%H(B diff --git a/usr.sbin/httpd/htdocs/manual/readme-tpf.html b/usr.sbin/httpd/htdocs/manual/readme-tpf.html index 5f1c27cbb3c..fffdc5582e2 100644 --- a/usr.sbin/httpd/htdocs/manual/readme-tpf.html +++ b/usr.sbin/httpd/htdocs/manual/readme-tpf.html @@ -51,6 +51,9 @@ "Off" (the default is "On") or lowering the Timeout value from the default 300 seconds (5 minutes) in order to reduce the number of active ECBs on your system.<br /> + + <p>Apache on TPF does not support listening on multiple ports.</p> + <a id="whats_available" name="whats_available"></a> <center> @@ -114,7 +117,7 @@ <li>mod_access.c <em>(Use of mod_access directives "<tt>allow from</tt>" & "<tt>deny from</tt>" - with host <u>names</u> (verses ip addresses) requires + with host <u>names</u> (versus ip addresses) requires PUT10) </em></li> <li>mod_actions.c </li> diff --git a/usr.sbin/httpd/htdocs/manual/suexec.html.en b/usr.sbin/httpd/htdocs/manual/suexec.html.en index e208ce88869..35359a9cb8b 100644 --- a/usr.sbin/httpd/htdocs/manual/suexec.html.en +++ b/usr.sbin/httpd/htdocs/manual/suexec.html.en @@ -91,16 +91,16 @@ developers as well as numerous beta testers. Every precaution has been taken to ensure a simple yet solidly safe base of code. Altering this code can cause unexpected problems and new - security risks. It is <strong>highly</strong> recommended you - not alter the suEXEC code unless you are well versed in the - particulars of security programming and are willing to share + security risks. It is <strong>highly</strong> recommended that + you do not alter the suEXEC code unless you are well versed in + the particulars of security programming and are willing to share your work with the Apache Group for consideration.</p> <p align="LEFT">Fourth, and last, it has been the decision of the Apache Group to <strong>NOT</strong> make suEXEC part of the default installation of Apache. To this end, suEXEC - configuration requires of the administrator careful attention - to details. After due consideration has been given to the + configuration requires careful attention to details from the + administrator. After due consideration has been given to the various settings for suEXEC, the administrator may install suEXEC through normal installation methods. The values for these settings need to be carefully determined and specified by @@ -348,7 +348,7 @@ </li> </ol> - <p align="LEFT">This is the standard operation of the the + <p align="LEFT">This is the standard operation of the suEXEC wrapper's security model. It is somewhat stringent and can impose new limitations and guidelines for CGI/SSI design, but it was developed carefully step-by-step with security in @@ -558,7 +558,7 @@ <p align="LEFT"><strong>NOTE!</strong> This section may not be complete. For the latest revision of this section of the documentation, see the Apache Group's <a - href="http://www.apache.org/docs/suexec.html">Online + href="http://httpd.apache.org/docs/suexec.html">Online Documentation</a> version.</p> <p align="LEFT">There are a few points of interest regarding diff --git a/usr.sbin/httpd/htdocs/manual/suexec.html.html b/usr.sbin/httpd/htdocs/manual/suexec.html.html index 3e785675b6e..2dc1163d891 100644 --- a/usr.sbin/httpd/htdocs/manual/suexec.html.html +++ b/usr.sbin/httpd/htdocs/manual/suexec.html.html @@ -93,16 +93,16 @@ developers as well as numerous beta testers. Every precaution has been taken to ensure a simple yet solidly safe base of code. Altering this code can cause unexpected problems and new - security risks. It is <strong>highly</strong> recommended you - not alter the suEXEC code unless you are well versed in the - particulars of security programming and are willing to share + security risks. It is <strong>highly</strong> recommended that + you do not alter the suEXEC code unless you are well versed in + the particulars of security programming and are willing to share your work with the Apache Group for consideration.</p> <p align="LEFT">Fourth, and last, it has been the decision of the Apache Group to <strong>NOT</strong> make suEXEC part of the default installation of Apache. To this end, suEXEC - configuration requires of the administrator careful attention - to details. After due consideration has been given to the + configuration requires careful attention to details from the + administrator. After due consideration has been given to the various settings for suEXEC, the administrator may install suEXEC through normal installation methods. The values for these settings need to be carefully determined and specified by @@ -350,7 +350,7 @@ </li> </ol> - <p align="LEFT">This is the standard operation of the the + <p align="LEFT">This is the standard operation of the suEXEC wrapper's security model. It is somewhat stringent and can impose new limitations and guidelines for CGI/SSI design, but it was developed carefully step-by-step with security in @@ -560,7 +560,7 @@ <p align="LEFT"><strong>NOTE!</strong> This section may not be complete. For the latest revision of this section of the documentation, see the Apache Group's <a - href="http://www.apache.org/docs/suexec.html">Online + href="http://httpd.apache.org/docs/suexec.html">Online Documentation</a> version.</p> <p align="LEFT">There are a few points of interest regarding diff --git a/usr.sbin/httpd/htdocs/manual/suexec.html.ja.jis b/usr.sbin/httpd/htdocs/manual/suexec.html.ja.jis index 92e9fe6c359..605277a3d20 100644 --- a/usr.sbin/httpd/htdocs/manual/suexec.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/suexec.html.ja.jis @@ -7,7 +7,7 @@ <title>Apache suEXEC Support</title> </head> - <!-- English revision:1.25 --> + <!-- English revision: 1.28 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> @@ -386,7 +386,7 @@ <dd>$B$3$N%*%W%7%g%s$O!"%G%U%)%k%H$G$O%$%s%9%H!<%k$5$l$:!"(B $BM-8z$K$O$J$i$J$$(B suEXEC $B5!G=$rM-8z$K$7$^$9!#(B suEXEC $B$r;H$&$h$&$K(B APACI $B$KMW5a$9$k$K$O!"(B--enable-suexec - $B%*%W%7%g%s$K$"$o$;$F>/$J$/$H$b0l$D$O(B --suexec-xxxxx + $B%*%W%7%g%s$H$"$o$;$F>/$J$/$H$b0l$D$O(B --suexec-xxxxx $B%*%W%7%g%s$,;XDj$5$l$J$1$l$P$J$j$^$;$s!#(B</dd> <dt><code>--suexec-caller=<em>UID</em></code></dt> @@ -399,7 +399,7 @@ <dd>Apache $B$N%I%-%e%a%s%H%k!<%H$r@_Dj$7$^$9!#$3$l$,(B suEXEC $B$NF0:n$G;HMQ$9$kM#0l$N%G%#%l%/%H%j3,AX$K$J$j$^$9(B (UserDir - $B$N;XDj$OJL(B)$B!#%G%U%)%k%H$G$O(B --datedir $B$K(B "/htdocs" + $B$N;XDj$OJL(B)$B!#%G%U%)%k%H$G$O(B --datadir $B$K(B "/htdocs" $B$H$$$&%5%U%#%C%/%9$r$D$1$?$b$N$G$9!#(B "<code>--datadir=/home/apache</code>" $B$H$7$F@_Dj$9$k$H!"(B suEXEC wrapper $B$K$H$C$F(B "/home/apache/htdocs" @@ -557,7 +557,7 @@ <p align="left"><strong>$BCm0U(B!</strong> $B$3$N>O$O40A4$G$O$"$j$^$;$s!#$3$N>O$N:G?72~D{HG$K$D$$$F$O!"(B - Apache $B%0%k!<%W$N(B<a href="http://www.apache.org/docs/suexec.html"> + Apache $B%0%k!<%W$N(B<a href="http://httpd.apache.org/docs/suexec.html"> $B%*%s%i%$%s%I%-%e%a%s%H(B</a>$BHG$r;2>H$7$F$/$@$5$$!#(B </p> diff --git a/usr.sbin/httpd/htdocs/manual/urlmapping.html b/usr.sbin/httpd/htdocs/manual/urlmapping.html index 64a2e80d074..09dd304ec93 100644 --- a/usr.sbin/httpd/htdocs/manual/urlmapping.html +++ b/usr.sbin/httpd/htdocs/manual/urlmapping.html @@ -92,7 +92,7 @@ href="mod/core.html#documentroot">DocumentRoot</a> specified in your configuration files. Therefore, the files and directories underneath the <code>DocumentRoot</code> make up the basic - document tree which will be visible from the web.</p> + document tree that will be visible from the web.</p> <p>Apache is also capable of <a href="vhosts/">Virtual Hosting</a>, where the server receives requests for more than @@ -237,12 +237,12 @@ http://www.example.com/startpage.html</code> </blockquote> - <p>Alternatively, to temporarily redirect all pages on a site - to one particular page, use the following:</p> + <p>Alternatively, to temporarily redirect all pages on one site + to a particular page on another site, use the following:</p> <blockquote> <code>RedirectMatch temp .* - http://www.example.com/startpage.html</code> + http://othersite.example.com/startpage.html</code> </blockquote> <h2><a id="rewrite" name="rewrite">Rewriting Engine</a></h2> @@ -283,7 +283,7 @@ <p>An especially useful feature of mod_speling, is that it will compare filenames without respect to case. This can help systems where users are unaware of the case-sensitive nature of - URLs and the unix filesystem. But using mod_speling for + URLs and the Unix filesystem. But using mod_speling for anything more than the occasional URL correction can place additional load on the server, since each "incorrect" request is followed by a URL redirection and a new request from the diff --git a/usr.sbin/httpd/htdocs/manual/vhosts-in-depth.html b/usr.sbin/httpd/htdocs/manual/vhosts-in-depth.html new file mode 100644 index 00000000000..0f87f775ed6 --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/vhosts-in-depth.html @@ -0,0 +1,398 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html><head> +<title>An In-Depth Discussion of VirtualHost Matching</title> +</head> + +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.2 + </H3> +</DIV> + +<h1 ALIGN="CENTER">An In-Depth Discussion of VirtualHost Matching</h1> + +<p>This is a very rough document that was probably out of date the moment +it was written. It attempts to explain exactly what the code does when +deciding what virtual host to serve a hit from. It's provided on the +assumption that something is better than nothing. The server version +under discussion is Apache 1.2. + +<p>If you just want to "make it work" without understanding +how, there's a <a href="#whatworks">What Works</a> section at the bottom. + +<h3>Config File Parsing</h3> + +<p>There is a main_server which consists of all the definitions appearing +outside of <CODE>VirtualHost</CODE> sections. There are virtual servers, +called <EM>vhosts</EM>, which are defined by +<A + HREF="mod/core.html#virtualhost" +><SAMP>VirtualHost</SAMP></A> +sections. + +<p>The directives +<A + HREF="mod/core.html#port" +><SAMP>Port</SAMP></A>, +<A + HREF="mod/core.html#servername" +><SAMP>ServerName</SAMP></A>, +<A + HREF="mod/core.html#serverpath" +><SAMP>ServerPath</SAMP></A>, +and +<A + HREF="mod/core.html#serveralias" +><SAMP>ServerAlias</SAMP></A> +can appear anywhere within the definition of +a server. However, each appearance overrides the previous appearance +(within that server). + +<p>The default value of the <code>Port</code> field for main_server +is 80. The main_server has no default <code>ServerName</code>, +<code>ServerPath</code>, or <code>ServerAlias</code>. + +<p>In the absence of any +<A + HREF="mod/core.html#listen" +><SAMP>Listen</SAMP></A> +directives, the (final if there +are multiple) <code>Port</code> directive in the main_server indicates +which port httpd will listen on. + +<p> The <code>Port</code> and <code>ServerName</code> directives for +any server main or virtual are used when generating URLs such as during +redirects. + +<p> Each address appearing in the <code>VirtualHost</code> directive +can have an optional port. If the port is unspecified it defaults to +the value of the main_server's most recent <code>Port</code> statement. +The special port <SAMP>*</SAMP> indicates a wildcard that matches any port. +Collectively the entire set of addresses (including multiple +<SAMP>A</SAMP> record +results from DNS lookups) are called the vhost's <EM>address set</EM>. + +<p> The magic <code>_default_</code> address has significance during +the matching algorithm. It essentially matches any unspecified address. + +<p> After parsing the <code>VirtualHost</code> directive, the vhost server +is given a default <code>Port</code> equal to the port assigned to the +first name in its <code>VirtualHost</code> directive. The complete +list of names in the <code>VirtualHost</code> directive are treated +just like a <code>ServerAlias</code> (but are not overridden by any +<code>ServerAlias</code> statement). Note that subsequent <code>Port</code> +statements for this vhost will not affect the ports assigned in the +address set. + +<p> +All vhosts are stored in a list which is in the reverse order that +they appeared in the config file. For example, if the config file is: + +<blockquote><pre> + <VirtualHost A> + ... + </VirtualHost> + + <VirtualHost B> + ... + </VirtualHost> + + <VirtualHost C> + ... + </VirtualHost> +</pre></blockquote> + +Then the list will be ordered: main_server, C, B, A. Keep this in mind. + +<p> +After parsing has completed, the list of servers is scanned, and various +merges and default values are set. In particular: + +<ol> +<li>If a vhost has no + <A + HREF="mod/core.html#serveradmin" + ><code>ServerAdmin</code></A>, + <A + HREF="mod/core.html#resourceconfig" + ><code>ResourceConfig</code></A>, + <A + HREF="mod/core.html#accessconfig" + ><code>AccessConfig</code></A>, + <A + HREF="mod/core.html#timeout" + ><code>Timeout</code></A>, + <A + HREF="mod/core.html#keepalivetimeout" + ><code>KeepAliveTimeout</code></A>, + <A + HREF="mod/core.html#keepalive" + ><code>KeepAlive</code></A>, + <A + HREF="mod/core.html#maxkeepaliverequests" + ><code>MaxKeepAliveRequests</code></A>, + or + <A + HREF="mod/core.html#sendbuffersize" + ><code>SendBufferSize</code></A> + directive then the respective value is + inherited from the main_server. (That is, inherited from whatever + the final setting of that value is in the main_server.) + +<li>The "lookup defaults" that define the default directory + permissions + for a vhost are merged with those of the main server. This includes + any per-directory configuration information for any module. + +<li>The per-server configs for each module from the main_server are + merged into the vhost server. +</ol> + +Essentially, the main_server is treated as "defaults" or a +"base" on +which to build each vhost. But the positioning of these main_server +definitions in the config file is largely irrelevant -- the entire +config of the main_server has been parsed when this final merging occurs. +So even if a main_server definition appears after a vhost definition +it might affect the vhost definition. + +<p> If the main_server has no <code>ServerName</code> at this point, +then the hostname of the machine that httpd is running on is used +instead. We will call the <EM>main_server address set</EM> those IP +addresses returned by a DNS lookup on the <code>ServerName</code> of +the main_server. + +<p> Now a pass is made through the vhosts to fill in any missing +<code>ServerName</code> fields and to classify the vhost as either +an <EM>IP-based</EM> vhost or a <EM>name-based</EM> vhost. A vhost is +considered a name-based vhost if any of its address set overlaps the +main_server (the port associated with each address must match the +main_server's <code>Port</code>). Otherwise it is considered an IP-based +vhost. + +<p> For any undefined <code>ServerName</code> fields, a name-based vhost +defaults to the address given first in the <code>VirtualHost</code> +statement defining the vhost. Any vhost that includes the magic +<SAMP>_default_</SAMP> wildcard is given the same <code>ServerName</code> as +the main_server. Otherwise the vhost (which is necessarily an IP-based +vhost) is given a <code>ServerName</code> based on the result of a reverse +DNS lookup on the first address given in the <code>VirtualHost</code> +statement. + +<p> + +<h3>Vhost Matching</h3> + +<p> +The server determines which vhost to use for a request as follows: + +<p> <code>find_virtual_server</code>: When the connection is first made +by the client, the local IP address (the IP address to which the client +connected) is looked up in the server list. A vhost is matched if it +is an IP-based vhost, the IP address matches and the port matches +(taking into account wildcards). + +<p> If no vhosts are matched then the last occurrence, if it appears, +of a <SAMP>_default_</SAMP> address (which if you recall the ordering of the +server list mentioned above means that this would be the first occurrence +of <SAMP>_default_</SAMP> in the config file) is matched. + +<p> In any event, if nothing above has matched, then the main_server is +matched. + +<p> The vhost resulting from the above search is stored with data +about the connection. We'll call this the <EM>connection vhost</EM>. +The connection vhost is constant over all requests in a particular TCP/IP +session -- that is, over all requests in a KeepAlive/persistent session. + +<p> For each request made on the connection the following sequence of +events further determines the actual vhost that will be used to serve +the request. + +<p> <code>check_fulluri</code>: If the requestURI is an absoluteURI, that +is it includes <code>http://hostname/</code>, then an attempt is made to +determine if the hostname's address (and optional port) match that of +the connection vhost. If it does then the hostname portion of the URI +is saved as the <EM>request_hostname</EM>. If it does not match, then the +URI remains untouched. <STRONG>Note</STRONG>: to achieve this address +comparison, +the hostname supplied goes through a DNS lookup unless it matches the +<code>ServerName</code> or the local IP address of the client's socket. + +<p> <code>parse_uri</code>: If the URI begins with a protocol +(<EM>i.e.</EM>, <code>http:</code>, <code>ftp:</code>) then the request is +considered a proxy request. Note that even though we may have stripped +an <code>http://hostname/</code> in the previous step, this could still +be a proxy request. + +<p> <code>read_request</code>: If the request does not have a hostname +from the earlier step, then any <code>Host:</code> header sent by the +client is used as the request hostname. + +<p> <code>check_hostalias</code>: If the request now has a hostname, +then an attempt is made to match for this hostname. The first step +of this match is to compare any port, if one was given in the request, +against the <code>Port</code> field of the connection vhost. If there's +a mismatch then the vhost used for the request is the connection vhost. +(This is a bug, see observations.) + +<p> +If the port matches, then httpd scans the list of vhosts starting with +the next server <STRONG>after</STRONG> the connection vhost. This scan does not +stop if there are any matches, it goes through all possible vhosts, +and in the end uses the last match it found. The comparisons performed +are as follows: + +<ul> +<li>Compare the request hostname:port with the vhost + <code>ServerName</code> and <code>Port</code>. + +<li>Compare the request hostname against any and all addresses given in + the <code>VirtualHost</code> directive for this vhost. + +<li>Compare the request hostname against the <code>ServerAlias</code> + given for the vhost. +</ul> + +<p> +<code>check_serverpath</code>: If the request has no hostname +(back up a few paragraphs) then a scan similar to the one +in <code>check_hostalias</code> is performed to match any +<code>ServerPath</code> directives given in the vhosts. Note that the +<STRONG>last match</STRONG> is used regardless (again consider the ordering of +the virtual hosts). + +<h3>Observations</h3> + +<ul> + +<li>It is difficult to define an IP-based vhost for the machine's + "main IP address". You essentially have to create a bogus + <code>ServerName</code> for the main_server that does not match the + machine's IPs. + +<li>During the scans in both <code>check_hostalias</code> and + <code>check_serverpath</code> no check is made that the vhost being + scanned is actually a name-based vhost. This means, for example, that + it's possible to match an IP-based vhost through another address. But + because the scan starts in the vhost list at the first vhost that + matched the local IP address of the connection, not all IP-based vhosts + can be matched. + + <p>Consider the config file above with three vhosts A, B, C. Suppose + that B is a named-based vhost, and A and C are IP-based vhosts. If + a request comes in on B or C's address containing a header + "<SAMP>Host: A</SAMP>" then + it will be served from A's config. If a request comes in on A's + address then it will always be served from A's config regardless of + any Host: header. + </p> + +<li>Unless you have a <SAMP>_default_</SAMP> vhost, + it doesn't matter if you mix name-based vhosts in amongst IP-based + vhosts. During the <code>find_virtual_server</code> phase above no + named-based vhost will be matched, so the main_server will remain the + connection vhost. Then scans will cover all vhosts in the vhost list. + + <p>If you do have a <SAMP>_default_</SAMP> vhost, then you cannot place + named-based vhosts after it in the config. This is because on any + connection to the main server IPs the connection vhost will always be + the <SAMP>_default_</SAMP> vhost since none of the name-based are + considered during <code>find_virtual_server</code>. + </p> + +<li>You should never specify DNS names in <code>VirtualHost</code> + directives because it will force your server to rely on DNS to boot. + Furthermore it poses a security threat if you do not control the + DNS for all the domains listed. + <a href="dns-caveats.html"> + There's more information + available on this and the next two topics</a>.</p> + +<li><code>ServerName</code> should always be set for each vhost. Otherwise + A DNS lookup is required for each vhost.</p> + +<li>A DNS lookup is always required for the main_server's + <code>ServerName</code> (or to generate that if it isn't specified + in the config).</p> + +<li>If a <code>ServerPath</code> directive exists which is a prefix of + another <code>ServerPath</code> directive that appears later in + the configuration file, then the former will always be matched + and the latter will never be matched. (That is assuming that no + Host header was available to disambiguate the two.)</p> + +<li>If a vhost that would otherwise be a name-vhost includes a + <code>Port</code> statement that doesn't match the main_server + <code>Port</code> then it will be considered an IP-based vhost. + Then <code>find_virtual_server</code> will match it (because + the ports associated with each address in the address set default + to the port of the main_server) as the connection vhost. Then + <code>check_hostalias</code> will refuse to check any other name-based + vhost because of the port mismatch. The result is that the vhost + will steal all hits going to the main_server address.</p> + +<li>If two IP-based vhosts have an address in common, the vhost appearing + later in the file is always matched. Such a thing might happen + inadvertently. If the config has name-based vhosts and for some reason + the main_server <code>ServerName</code> resolves to the wrong address + then all the name-based vhosts will be parsed as ip-based vhosts. + Then the last of them will steal all the hits.</P> + +<li>The last name-based vhost in the config is always matched for any hit + which doesn't match one of the other name-based vhosts.</p> + +</ul> + +<h3><a name="whatworks">What Works</a></h3> + +<p>In addition to the tips on the <a href="dns-caveats.html#tips">DNS +Issues</a> page, here are some further tips: + +<ul> + +<li>Place all main_server definitions before any VirtualHost definitions. +(This is to aid the readability of the configuration -- the post-config +merging process makes it non-obvious that definitions mixed in around +virtualhosts might affect all virtualhosts.) +<p> + +<li>Arrange your VirtualHosts such +that all name-based virtual hosts come first, followed by IP-based +virtual hosts, followed by any <SAMP>_default_</SAMP> virtual host +<p> + +<li>Avoid <code>ServerPaths</code> which are prefixes of other +<code>ServerPaths</code>. If you cannot avoid this then you have to +ensure that the longer (more specific) prefix vhost appears earlier in +the configuration file than the shorter (less specific) prefix +(<EM>i.e.</EM>, "ServerPath /abc" should appear after +"ServerPath /abcdef"). +<p> + +<li>Do not use <i>port-based</i> vhosts in the same server as +name-based vhosts. A loose definition for port-based is a vhost which +is determined by the port on the server (<em>i.e.</em> one server with +ports 8000, 8080, and 80 all of which have different configurations). +<p> + +</ul> + +<HR> +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.2 +</H3> + +<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A> + +</BODY> +</HTML> diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/details_1_2.html b/usr.sbin/httpd/htdocs/manual/vhosts/details_1_2.html index 9019b526ba4..f4717d3c5d8 100644 --- a/usr.sbin/httpd/htdocs/manual/vhosts/details_1_2.html +++ b/usr.sbin/httpd/htdocs/manual/vhosts/details_1_2.html @@ -358,7 +358,7 @@ <h3><a id="whatworks" name="whatworks">What Works</a></h3> <p>In addition to the tips on the <a - href="dns-caveats.html#tips">DNS Issues</a> page, here are some + href="../dns-caveats.html#tips">DNS Issues</a> page, here are some further tips:</p> <ul> diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html.ja.jis b/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html.ja.jis index e1f0286d30f..d9a8bfa5179 100644 --- a/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html.ja.jis @@ -6,7 +6,7 @@ <title>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H(B</title> </head> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> - <!-- English revision: 1.18 --> + <!-- English revision: 1.21 --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000080" alink="#ff0000"> <div align="CENTER"> @@ -42,17 +42,18 @@ <p>$B=i4|$N%P!<%8%g%s$N(B HTTP $B$G$O(B ($BB>$NB?$/$N%W%m%H%3%k!"Nc$($P(B FTP $B$HF1MM(B) $B0l$D$N%5!<%P>e$G$N%P!<%A%c%k%[%9%H$4$H$K0[$J$C$?(B IP $B%"%I%l%9$,I,MW$G$7$?!#$$$/$D$+$N%W%i%C%H%U%)!<%`$G$O!"$3$N$3$H$,(B - $B<B9T2DG=$J%P!<%A%c%k%[%9%H$N?t$r8BDj$7$F$7$^$&$3$H$K$J$j$^$7$?!#(B - $B$^$?!"(BIP $B%"%I%l%9$N?t$K$O8B$j$,$"$k$H$$$&$3$H$K$D$$$F$N7|G0$+$i!"(B - $B%l%8%9%H%i(B (ARIN, RIPE, APNIC) $B$O%P!<%A%c%k%[%9%H$4$H$K(B + $B<B9T2DG=$J%P!<%A%c%k%[%9%H$N?t$r8BDj$7$F$7$^$&$3$H$K$J$j$^$7$?!#$^$?!"(B + IP $B%"%I%l%9$N?t$K$O8B$j$,$"$k$H$$$&$3$H$K$D$$$F$N7|G0$+$i!"%l%8%9%H%i(B + (ARIN, RIPE, APNIC) $B$O%P!<%A%c%k%[%9%H$4$H$K(B IP $B$r3d$jEv$F$k$h$&$J$3$H$OHr$1$k$h$&6/$/MW@A$7$F$$$^$9!#(B</p> - <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$ODL>oC1=c$G!"$=$l$>$l$N%[%9%HL>$H(B - $B$=$l$KBP1~$9$k@53N$J(B IP $B%"%I%l%9$r(B DNS $B$G@_Dj$7!"0[$J$k(B - $B%[%9%HL>$r6hJL=PMh$k$h$&$K(B Apache HTTP $B%5!<%P$r@_Dj$9$k$@$1$G$9!#(B - $B$5$i$K!"L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$OITB-$9$k(B IP - $B%"%I%l%9$N<{MW$r4KOB$7$^$9!#$7$?$,$C$F!"(BIP $B%Y!<%9$N%P!<%A%c%k%[%9%H$r(B - $BA*Br$9$Y$-FCDj$NM}M3$,$J$1$l$PL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r;H$&$Y$-$G$9!#(B + <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$ODL>oC1=c$G!"(B + $B$=$l$>$l$N%[%9%HL>$H$=$l$KBP1~$9$k@53N$J(B IP $B%"%I%l%9$r(B DNS + $B$G@_Dj$7!"0[$J$k%[%9%HL>$r6hJL=PMh$k$h$&$K(B Apache HTTP + $B%5!<%P$r@_Dj$9$k$@$1$G$9!#$5$i$K!"L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$OITB-$9$k(B + IP $B%"%I%l%9$N<{MW$r4KOB$7$^$9!#$7$?$,$C$F!"(BIP + $B%Y!<%9$N%P!<%A%c%k%[%9%H$rA*Br$9$Y$-FCDj$NM}M3$,$J$1$l$PL>A0%Y!<%9$N(B + $B%P!<%A%c%k%[%9%H$r;H$&$Y$-$G$9!#(B IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$r;HMQ$9$k$3$H$r9MN8$9$kM}M3$H$7$F!"(B</p> <ul> @@ -68,8 +69,8 @@ <li>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$O(B SSL $B%W%m%H%3%k$NFCD'$K$h$j!"(B SSL $B%;%-%e%"%5!<%P$K$O;H$($^$;$s!#(B</li> - <li>$B%*%Z%l!<%F%#%s%0%7%9%F%`$d%M%C%H%o!<%/AuCV$N$J$+$K$O!"(B - $BJL$N(B IP $B%"%I%l%9>e$G$J$$>l9g!"J#?t$N%[%9%H$rJL07$$$G$-$J$$$h$&$J(B + <li>$B%*%Z%l!<%F%#%s%0%7%9%F%`$d%M%C%H%o!<%/AuCV$N$J$+$K$O!"JL$N(B IP + $B%"%I%l%9>e$G$J$$>l9g!"J#?t$N%[%9%H$rJL07$$$G$-$J$$$h$&$J(B $BBS0h4IM}$NJ}K!$r<BAu$7$F$$$k$b$N$,$"$j$^$9!#(B</li> </ul> @@ -96,30 +97,40 @@ $B$r;XDj$9$kI,MW$,$"$j$^$9!#(B $B$3$l$O(B <a href="../mod/core.html#namevirtualhost">NameVirtualHost</a> $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#DL>o!"(B<code>NameVirtualHost</code> $B$G(B - <code>*</code> $B$NB0@-$r;H$C$F%5!<%P$NA4$F$N(B IP $B%"%I%l%9$r;H$$$^$9!#(B + <code>*</code> $B$NB0@-$r;H$C$F%5!<%P$N$9$Y$F$N(B IP $B%"%I%l%9$r;H$$$^$9!#(B (<code>NameVirtualHost *</code> $B$O%P!<%8%g%s(B 1.3.13 $B0J9_$N$_$GF0:n$7$^$9!#(B) <code>NameVirtualHost</code> $B%G%#%l%/%F%#%V$G(B IP $B%"%I%l%9$r=q$$$F$b!"(B $B<+F0E*$K%5!<%P$,$=$N(B IP $B%"%I%l%9$r%j%C%9%s$9$k$H$$$&$3$H$O$J$$$3$H$K(B $BCm0U$7$F$/$@$5$$!#>\:Y$O(B <a href="../bind.html">Apache $B$N;H$&%"%I%l%9$H(B $B%]!<%H$r@_Dj$9$k(B</a> $B$rFI$s$G$/$@$5$$!#$5$i$K!"$3$3$G;XDj$5$l$?(B - IP $B%"%I%l%9$OA4$F%5!<%P$N%M%C%H%o!<%/%$%s%?!<%U%'!<%9$H4XO"IU$1$i$l$F(B + IP $B%"%I%l%9$O$9$Y$F%5!<%P$N%M%C%H%o!<%/%$%s%?!<%U%'!<%9$H4XO"IU$1$i$l$F(B $B$$$J$1$l$P$J$j$^$;$s!#(B</p> <p>$B<!$O!"07$$$?$$$=$l$>$l$N%[%9%H$KBP$7$F(B <a - href="../mod/core.html#virtualhost"><VirtualHost></a> $B%V%m%C%/$r(B - $B:n@.$7$F$/$@$5$$!#(B<code><VirtualHost></code> $B%G%#%l%/%F%#%V$N(B - $B0z?t$O(B <code>NameVirtualHost</code> $B%G%#%l%/%F%#%V$N0z?t$H(B - $BF1$8$K$7$F$/$@$5$$(B ($B$9$J$o$A!"(BIP $B%"%I%l%90l$D$dA4$F$N%"%I%l%9$N$?$a$N(B - <code>*</code>)$B!#$=$l$>$l$N(B <code><VirtualHost></code> $B%G%#%l%/%F%#%V(B - $B$NCf$K$O!":GDc8B!"$I$N%[%9%H$,07$o$l$k$+$r<($9(B <a + href="../mod/core.html#virtualhost"><VirtualHost></a> + $B%V%m%C%/$r:n@.$7$F$/$@$5$$!#(B<code><VirtualHost></code> + $B%G%#%l%/%F%#%V$N0z?t$O(B <code>NameVirtualHost</code> + $B%G%#%l%/%F%#%V$N0z?t$HF1$8$K$7$F$/$@$5$$(B ($B$9$J$o$A!"(BIP + $B%"%I%l%90l$D$d$9$Y$F$N%"%I%l%9$rI=$9(B <code>*</code>)$B!#$=$l$>$l$N(B + <code><VirtualHost></code> $B%G%#%l%/%F%#%V$NCf$K$O!":GDc8B!"(B + $B$I$N%[%9%H$,07$o$l$k$+$r<($9(B <a href="../mod/core.html#servername">ServerName</a> $B%G%#%l%/%F%#%V$H!"(B $B$=$N%[%9%HMQ$N%3%s%F%s%D$,%U%!%$%k%7%9%F%`>e$N$I$3$K$"$k$+$r<($9(B - <a href="../mod/core.html#documentroot">DocumentRoot</a> $B%G%#%l%/%F%#%V$r(B - $B=q$/I,MW$,$"$j$^$9!#(B</p> - - <p>$B$?$H$($P!"(B<samp>www.domain.tld</samp> $B$H(B - <samp>www.otherdomain.tld</samp> $B$NN>J}$,(B 1$B$D$N(B IP - $B%"%I%l%9$r;X$7$F$$$k$H$7$^$7$g$&!#$=$N$h$&$J>l9g$O!"(B + <a href="../mod/core.html#documentroot">DocumentRoot</a> + $B%G%#%l%/%F%#%V$r=q$/I,MW$,$"$j$^$9!#(B</p> + + <p>$B4{$KB8:_$9$k%&%'%V%5!<%P$K%P!<%A%c%k%[%9%H$rDI2C$9$k>l9g!"(B + $BB8:_$9$k%[%9%HMQ$N(B <VirtualHost> $B%V%m%C%/$r:n$i$J$1$l$P$J$j$^$;$s!#(B + <code>ServerName</code> $B$H(B <code>DocumentRoot</code> + $B$O$3$N%P!<%A%c%k%[%9%H$b4^$a$F!"$=$l$>$l%0%m!<%P%k$J(B + <code>ServerName</code> $B5Z$S(B <code>DocumentRoot</code> + $B$HF1$8$b$N$K$9$k$Y$-$G$9!#@_Dj%U%!%$%kCf$G:G=i$K5-=R$7$?(B + $B$3$N%P!<%A%c%k%[%9%H$O(B + $B%G%U%)%k%H$N%P!<%A%c%k%[%9%H$H$7$F$b?6$kIq$$$^$9!#(B + </p> + <p>$BNc$($P!"%I%a%$%s(B <samp>www.domain.tld</samp> $B$r1?MQ$7$F$$$k$H$3$m$K(B + $B%P!<%A%c%k%[%9%H(B <samp>www.otherdomain.tld</samp> $B$rDI2C$9$k>l9g$G!"(B + $BN>J}$,F1$8(B IP $B%"%I%l%9$r;X$7$F$$$k$H$7$^$9!#$=$N$h$&$J>l9g$O!"(B <code>httpd.conf</code> $B$K0J2<$N$h$&$J%3!<%I$rDI2C$9$k$@$1$G$9(B</p> <pre> NameVirtualHost * @@ -149,18 +160,18 @@ ServerAlias domain.tld *.domain.tld </pre> - <p><code>domain.tld</code> $B%I%a%$%s$X$NA4$F$N%[%9%H$X$N%j%/%(%9%H$O(B + <p><code>domain.tld</code> $B%I%a%$%s$X$N$9$Y$F$N%[%9%H$X$N%j%/%(%9%H$O(B <code>www.domain.tld</code> $B$N%P!<%A%c%k%[%9%H$,=hM}$7$^$9!#(B - * $B$d(B ? $B$r%o%$%k%I%+!<%IJ8;z$H$7$F;HMQ$G$-$^$9!#(B - Of course,you can't just make up names and place them in <code>ServerName</code> - or <code>ServerAlias</code>. - $BBh0l$K(B DNS $B$N%[%9%HL>$H(B IP $B%"%I%l%9$r%5!<%P$K$"$o$;$FE,@Z$K@_Dj$9$k;v$,I,MW$G$9(B</p> + * $B$d(B ? $B$r%o%$%k%I%+!<%IJ8;z$H$7$F;HMQ$G$-$^$9$,!"EvA3$J$,$i$=$l$@$1$G(B + <code>ServerName</code> $B$d(B <code>ServerAlias</code> + $B$NL>A0$d>l=j$r9=@.$9$k$3$H$O$G$-$^$;$s!#$^$::G=i$K(B DNS $B$N%[%9%HL>$H(B + IP $B%"%I%l%9$r%5!<%P$K$"$o$;$FE,@Z$K@_Dj$9$k;v$,I,MW$G$9(B</p> <p>$B:G8e$K!"(B<code><VirtualHost></code> $B%3%s%F%J$NCf$K(B $BB>$N%G%#%l%/%F%#%V$r=q$/$3$H$G!"%P!<%A%c%k%[%9%H$N@_Dj$r:Y$+$/JQ99(B $B$9$k$3$H$,$G$-$^$9!#$I$N%G%#%l%/%F%#%V$r=q$/$3$H$,$G$-$k$+$O!"(B $B%G%#%l%/%F%#%V$N(B <a - href="../mod/directive-dist.html#context">$B%3%s%F%-%9%H(B</a> $B$r(B + href="../mod/directive-dict.html#context">$B%3%s%F%-%9%H(B</a> $B$r(B $BD4$Y$F$/$@$5$$!#(B<em>$B<g%5!<%P%3%s%F%-%9%H(B</em> (<code><VirtualHost></code> $B%3%s%F%J$N30(B) $B$N(B $B@_DjMQ%G%#%l%/%F%#%V$O%P!<%A%c%k%[%9%H$G$N@_Dj$G>e=q$-$5$l$F$$$J$$(B diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/vhosts-in-depth.html b/usr.sbin/httpd/htdocs/manual/vhosts/vhosts-in-depth.html index 9019b526ba4..f4717d3c5d8 100644 --- a/usr.sbin/httpd/htdocs/manual/vhosts/vhosts-in-depth.html +++ b/usr.sbin/httpd/htdocs/manual/vhosts/vhosts-in-depth.html @@ -358,7 +358,7 @@ <h3><a id="whatworks" name="whatworks">What Works</a></h3> <p>In addition to the tips on the <a - href="dns-caveats.html#tips">DNS Issues</a> page, here are some + href="../dns-caveats.html#tips">DNS Issues</a> page, here are some further tips:</p> <ul> diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/virtual-host.html b/usr.sbin/httpd/htdocs/manual/vhosts/virtual-host.html index f20fa1690aa..0c5116196d4 100644 --- a/usr.sbin/httpd/htdocs/manual/vhosts/virtual-host.html +++ b/usr.sbin/httpd/htdocs/manual/vhosts/virtual-host.html @@ -55,7 +55,7 @@ <blockquote> http://www.smallco.com/ </blockquote> - and baygroup's home page would would have the URL + and baygroup's home page would have the URL <blockquote> http://www.baygroup.org/ diff --git a/usr.sbin/httpd/htdocs/manual/virtual-host.html b/usr.sbin/httpd/htdocs/manual/virtual-host.html new file mode 100644 index 00000000000..d21ac708fd8 --- /dev/null +++ b/usr.sbin/httpd/htdocs/manual/virtual-host.html @@ -0,0 +1,216 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> +<html> +<head> +<title>Apache Server Virtual Host Support</title> +</head> + +<!-- Background white, links blue (unvisited), navy (visited), red (active) --> +<BODY + BGCOLOR="#FFFFFF" + TEXT="#000000" + LINK="#0000FF" + VLINK="#000080" + ALINK="#FF0000" +> +<DIV ALIGN="CENTER"> + <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]"> + <H3> + Apache HTTP Server Version 1.2 + </H3> +</DIV> + +<h1 ALIGN="CENTER">Virtual Host Support</h1> + +<strong>See Also:</strong> +<a href="host.html">Non-IP based virtual hosts</a> + +<h2>What are virtual hosts?</h2> +This is the ability of a single machine to be a web server for multiple +domains. For example, an Internet service provider might have a machine +called <code>www.serve.com</code> which provides Web space for several +organizations including, say, <em>smallco</em> and <em>baygroup</em>. +Ordinarily, these groups would be given parts of the Web tree on www.serve.com. +So smallco's home page would have the URL +<blockquote> +http://www.serve.com/smallco/ +</blockquote> +and baygroup's home page would have the URL +<blockquote> +http://www.serve.com/baygroup/ +</blockquote> +<p> +For esthetic reasons, however, both organizations would rather their home +pages appeared under their own names rather than that of the service +provider's; but they do not want to set up their own Internet links and +servers. +<p> +Virtual hosts are the solution to this problem. smallco and baygroup would +have their own Internet name registrations, <code>www.smallco.com</code> and +<code>www.baygroup.org</code> respectively. These hostnames would both +correspond to the service provider's machine (www.serve.com). Thus +smallco's home page would now have the URL +<blockquote> +http://www.smallco.com/ +</blockquote> +and baygroup's home page would would have the URL +<blockquote> +http://www.baygroup.org/ +</blockquote> + +<h2>System requirements</h2> +Due to limitations in the HTTP/1.0 protocol, the web server <strong>must have a +different IP address for each virtual host</strong>. This can be achieved +by the machine having several physical network connections, or by use +of a <a href="misc/vif-info.html">virtual interface</a> on some operating systems. + +<h2>How to set up Apache</h2> +There are two ways of configuring apache to support multiple hosts. +Either by running a separate httpd daemon for each hostname, or by running a +single daemon which supports all the virtual hosts. +<p> +Use multiple daemons when: +<ul> +<li>The different virtual hosts need very different httpd configurations, such + as different values for: <A HREF="mod/core.html#servertype">ServerType</A>, + <A HREF="mod/core.html#user">User</A>, + <A HREF="mod/core.html#group">Group</A>, + <A HREF="mod/mod_mime.html#typesconfig">TypesConfig</A> or + <A HREF="mod/core.html#serverroot">ServerRoot</A>. +<li>The machine does not process a very high request rate. +</ul> +Use a single daemon when: +<ul> +<li>Sharing of the httpd configuration between virtual hosts is acceptable. +<li>The machine services a large number of requests, and so the performance + loss in running separate daemons may be significant. +</ul> + +<h2>Setting up multiple daemons</h2> +Create a separate httpd installation for each virtual host. +For each installation, use the +<A HREF="mod/core.html#bindaddress">BindAddress</A> directive in the configuration +file to select which IP address (or virtual host) that daemon services. +e.g. +<blockquote><code>BindAddress www.smallco.com</code></blockquote> +This hostname can also be given as an IP address. + +<h2>Setting up a single daemon</h2> +For this case, a single httpd will service requests for all the virtual hosts. +The <A HREF="mod/core.html#virtualhost">VirtualHost</A> directive in the + configuration file is used to set the values of +<A HREF="mod/core.html#serveradmin">ServerAdmin</A>, +<A HREF="mod/core.html#servername">ServerName</A>, +<A HREF="mod/core.html#documentroot">DocumentRoot</A>, +<A HREF="mod/core.html#errorlog">ErrorLog</A> and +<A HREF="mod/mod_log_common.html#transferlog">TransferLog</A> configuration +directives to different values for each virtual host. +e.g. +<blockquote><code> +<VirtualHost www.smallco.com><br> +ServerAdmin webmaster@mail.smallco.com<br> +DocumentRoot /groups/smallco/www<br> +ServerName www.smallco.com<br> +ErrorLog /groups/smallco/logs/error_log<br> +TransferLog /groups/smallco/logs/access_log<br> +</VirtualHost><br> +<br> +<VirtualHost www.baygroup.org><br> +ServerAdmin webmaster@mail.baygroup.org<br> +DocumentRoot /groups/baygroup/www<br> +ServerName www.baygroup.org<br> +ErrorLog /groups/baygroup/logs/error_log<br> +TransferLog /groups/baygroup/logs/access_log<br> +</VirtualHost><br> +</code></blockquote> + +This VirtualHost hostnames can also be given as IP addresses. + +<P> + +Almost <strong>ANY</strong> configuration directive can be put +in the VirtualHost directive, with the exception of +<A HREF="mod/core.html#servertype">ServerType</A>, +<A HREF="mod/core.html#user">User</A>, +<A HREF="mod/core.html#group">Group</A>, +<A HREF="mod/core.html#startservers">StartServers</A>, +<A HREF="mod/core.html#maxspareservers">MaxSpareServers</A>, +<A HREF="mod/core.html#minspareservers">MinSpareServers</A>, +<A HREF="mod/core.html#maxrequestsperchild">MaxRequestsPerChild</A>, +<A HREF="mod/core.html#bindaddress">BindAddress</A>, +<A HREF="mod/core.html#pidfile">PidFile</A>, +<A HREF="mod/mod_mime.html#typesconfig">TypesConfig</A>, and +<A HREF="mod/core.html#serverroot">ServerRoot</A>. + +<P> + +<EM>SECURITY:</EM> When specifying where to write log files, be aware +of some security risks which are present if anyone other than the +user that starts Apache has write access to the directory where they +are written. See the <A HREF="misc/security_tips.html">security +tips</A> document for details. + +<P> + +<H2>File Handle/Resource Limits:</H2> +When using a large number of Virtual Hosts, Apache may run out of available +file descriptors if each Virtual Host specifies different log files. +The total number of file descriptors used by Apache is one for each distinct +error log file, one for every other log file directive, plus 10-20 for +internal use. Unix operating systems limit the number of file descriptors that +may be used by a process; the limit is typically 64, and may usually be +increased up to a large hard-limit. +<p> +Although Apache attempts to increase the limit as required, this +may not work if: +<ol> +<li>Your system does not provide the setrlimit() system call. +<li>The setrlimit(RLIMIT_NOFILE) call does not function on your system + (such as Solaris 2.3) +<li>The number of file descriptors required exceeds the hard limit. +<li>Your system imposes other limits on file descriptors, such as a limit +on stdio streams only using file descriptors below 256. (Solaris 2) +</ol> + +In the event of problems you can: +<ul> +<li>Reduce the number of log files; don't specify log files in the VirtualHost +sections, but only log to the main log files. +<li>If you system falls into 1 or 2 (above), then increase the file descriptor +limit before starting Apache, using a script like +<blockquote><code> +#!/bin/sh <br> +ulimit -S -n 100 <br> +exec httpd</code></blockquote> +</ul> + +The have been reports that Apache may start running out of resources allocated +for the root process. This will exhibit itself as errors in the error log like +"unable to fork". There are two ways you can bump this up: + +<OL> +<LI>Have a <code>csh</code> script wrapper around httpd which sets the +"rlimit" to some large number, like 512. +<LI>Edit http_main.c to add calls to setrlimit() from main(), along the lines of +<PRE> + struct rlimit rlp; + + rlp.rlim_cur = rlp.rlim_max = 512; + if (setrlimit(RLIMIT_NPROC, &rlp)) { + fprintf(stderr, "setrlimit(RLIMIT_NPROC) failed.\n"); + exit(1); + } +</PRE> +(thanks to "Aaron Gifford <agifford@InfoWest.COM>" for the patch) +</OL> + +The latter will probably manifest itself in a later version of Apache. + +<HR> +<H3 ALIGN="CENTER"> + Apache HTTP Server Version 1.2 +</H3> + +<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A> + +</body></html> + diff --git a/usr.sbin/httpd/htdocs/manual/win_compiling.html.ja.jis b/usr.sbin/httpd/htdocs/manual/win_compiling.html.ja.jis index 9463042f2ba..ff0e02495ef 100644 --- a/usr.sbin/httpd/htdocs/manual/win_compiling.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/win_compiling.html.ja.jis @@ -8,7 +8,7 @@ </head> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> - <!-- English revision: 1.14 --> + <!-- English revision: 1.16 --> <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#000080" alink="#FF0000"> <div align="CENTER"> @@ -21,40 +21,46 @@ <h1 align="center">Microsoft Windows $B$G$N(B Apache $B$N%3%s%Q%$%k(B</h1> - <p>Apache $B$N%3%s%Q%$%k$r$O$8$a$kA0$K!"B?$/$N=EMW$J%]%$%s%H$,$"$j$^$9!#(B + <p>Apache $B$N%3%s%Q%$%k$r;O$a$k$K$"$?$C$F!"B?$/$N=EMW$J%]%$%s%H$,$"$j$^$9!#(B $B;O$a$kA0$K!"(B<a href="windows.html">Microsoft Windows $B$G$N(B Apache $B$N;HMQ(B</a>$B$r8+$F$/$@$5$$!#(B</p> - <p>Apache $B$r%3%s%Q%$%k$9$k$K$O(B Microsoft Visual - C++ 5.0 $B$^$?$O(B 6.0 $B$,E,@Z$K%$%s%9%H!<%k$5$l$F$$$k$3$H$,I,MW$G$9!#(B - $B%S%k%I$O%3%^%s%I%i%$%s%D!<%k!"(B - $B$^$?$O(B Visual Studio $B4D6-$G2DG=$G$9!#%$%s%9%H!<%k$NJ}K!$O!"(B - VC++ $B$N%^%K%e%"%k$r;29M$K$7$F$/$@$5$$!#%3%^%s%I%i%$%s$G$N%S%k%I(B - ($B$?$H$($P(B nmake $B$N;HMQ(B)$B$G$O!"%3%^%s%I%i%$%s%D!<%k$N=`Hw$K(B - Program Files/DevStudio/VC/bin - $B%U%)%k%@$K$"$k(B vcvars32.bat $B5Z$S(B Platform SDK $B$N(B setenv.bat - $B$N%U%!%$%k$,I,MW$K$J$k$G$"$m$&$3$H$K$D$$$F!"(B + <p>Apache $B$r%3%s%Q%$%k$9$k$K$O(B Microsoft Visual C++ 5.0 + $B$^$?$O(B 6.0 $B$,E,@Z$K%$%s%9%H!<%k$5$l$F$$$k$3$H$,I,MW$G$9!#(B + $B%S%k%I$O%3%^%s%I%i%$%s%D!<%k!"$^$?$O(B Visual Studio + $B4D6-$G2DG=$G$9!#%$%s%9%H!<%k$NJ}K!$O!"(BVC++ + $B$N%^%K%e%"%k$r;29M$K$7$F$/$@$5$$!#%3%^%s%I%i%$%s$G$N%S%k%I(B + ($BNc$($P(B nmake $B$N;HMQ(B)$B$G$O!"%3%^%s%I%i%$%s%D!<%k$N=`Hw$K(B Program + Files/DevStudio/VC/bin $B%U%)%k%@$K$"$k(B vcvars32.bat $B5Z$S(B Platform + SDK $B$N(B setenv.bat $B$N%U%!%$%k$,I,MW$K$J$k$G$"$m$&$3$H$K$D$$$F!"(B $BFC$KCm0U$7$F$/$@$5$$!#(BMakefile.win $B$d(B Visual Studio IDE $B$N(B InstallBin $B%W%m%8%'%/%H$r;H$C$F(B Apache $B$r%$%s%9%H!<%k$9$k>l9g$O!"(B - awk $B%f!<%F%#%j%F%#$bI,MW$K$J$j$^$9!#(B</p> + awk $B%f!<%F%#%j%F%#$bI,MW$K$J$j$^$9!#(BVisual Studio 7.0 (.net) + $B$r;H$&>l9g$O!"(BApache.dsw $B$rFI$_9~$_(B .msproj + $B%U%)!<%^%C%H$KJQ49$7$F$/$@$5$$!#%W%m%8%'%/%H%U%!%$%k(B (.dsp) + $B$KJQ99$,$"$C$?>l9g$O(B Apache.dsw + $B$r0l$+$iJQ49$7D>$5$J$1$l$P$J$j$^$;$s!#(B</p> - <p>$B$^$:!"(BIDE $B$r;H$&$D$b$j$J$i%Q%9$,DL$j!"(B DevStudio + <p>$B$^$:!"(BIDE $B$r;H$&$D$b$j$J$i%Q%9$,DL$j!"(BDevStudio $B4D6-$,2r<a$G$-$k$H$3$m$K(B awk.exe $B$r%$%s%9%H!<%k$7$F$/$@$5$$!#(B - Windows$B$GMxMQ2DG=$J(B awk $B$OMM!9$J%P!<%8%g%s$,$"$j$^$9!#(B - $B0lHV%$%s%9%H!<%k$7$d$9$$$b$N$O(B Brian Kernighan $B$N(B<a - href="http://cm.bell-labs.com/cm/cs/who/bwk/"> - http://cm.bell-labs.com/cm/cs/who/bwk/</a>$B%5%$%H$+$iF~<j2DG=$G$9!#(B - $B$3$N%5%$%H$+$i(B<a href="http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe" + Windows $B$GMxMQ2DG=$J(B awk $B$OMM!9$J%P!<%8%g%s$,$"$j$^$9!#(B + $B0lHV%$%s%9%H!<%k$7$d$9$$$b$N$O(B Brian Kernighan $B$N(B <a + href="http://cm.bell-labs.com/cm/cs/who/bwk/" + >http://cm.bell-labs.com/cm/cs/who/bwk/</a> $B%5%$%H$+$iF~<j2DG=$G$9!#(B + $B$3$N%5%$%H$+$i(B <a href="http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe" >http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe</a> $B$r%@%&%s%m!<%I$7$?>l9g$O!"(Bawk95.exe $B$r(B awk.exe $B$H$$$&L>A0$GJ]B8$7$J$1$l$P$J$j$^$;$s!#(B</p> - <p>DevStudio $B$O%D!<%k(B(<u>T</u>)$B%a%K%e!<$N%*%W%7%g%s(B(<u>O</u>)$B0J2<$N!"(B - $B%G%#%l%/%H%j$N<B9T2DG=%U%!%$%k$K%j%9%H$5$l$?>l=j$K$"$k>l9g$K$N$_!"(B - awk.exe $B$r8+$D$1$i$l$k$3$H$KCm0U$7$F$/$@$5$$!#I,MW$K1~$8!"(Bawk.exe - $B$N%Q%9$r$3$N%j%9%H$KDI2C$7$F$/$@$5$$!#(B</p> + + <p>Developer Studio IDE $B$O%D!<%k(B (<u>T</u>) $B%a%K%e!<$N%*%W%7%g%s(B + (<u>O</u>) $B0J2<$N!"%G%#%l%/%H%j%?%V(B (Developer Studio 7.0 $B$G$O(B + Projects - VC++ Directories) + $B$N<B9T2DG=%U%!%$%k$K%j%9%H$5$l$?>l=j$K$"$k>l9g$K$N$_!"(Bawk.exe + $B$r8+$D$1$i$l$k$3$H$KCm0U$7$F$/$@$5$$!#I,MW$K1~$8!"(Bawk.exe + $B$X$N%Q%9$r$3$N%j%9%H!"%7%9%F%`$N4D6-JQ?t(B PATH $B$KDI2C$7$F$/$@$5$$!#(B</p> <p>$B$=$l$+$i!"E,@Z$J%G%#%l%/%H%j$K(B Apache $B$NG[I[$rE83+$7$F$/$@$5$$!#(B - $B%3%^%s%I%i%$%s%W%m%s%W%H$r3+$-!"(BApache $BG[I[%5%V%G%#%l%/%H%j(B + $B%3%^%s%I%W%m%s%W%H$r3+$-!"(BApache $BG[I[%5%V%G%#%l%/%H%j(B <code>src</code> $B$K0\F0$7$F$/$@$5$$(B</p> <p><code>Makefile.win</code> $B%U%!%$%k$K$O(B Apache $B$N(B makefile @@ -120,7 +126,7 @@ $BM#0l$NNc30!"%G%P%C%0%7%s%\%kMQ$N%U%i%0$G$"$k(B /ZI $B%U%i%0$r=|$$$F$3$N%U%)!<%^%C%H$rG'<1$7$^$9!#(B VC 5.0 $B$G$O(B /Zi $B%U%i%0$,$3$l$KAjEv$7$^$9!#(B - Visual Studio 5.0 (97) $B$N(B .dsp$B%U%!%$%k$r$9$0$K=`Hw$9$k$K$O!"(B + Visual Studio 5.0 (97) $B$N(B .dsp $B%U%!%$%k$r$9$0$K=`Hw$9$k$K$O!"(B <code>src\helpers</code> $B%U%)%k%@$K$FG[I[$5$l$F$$$k(B perl $B%9%/%j%W%H$r;H$&$3$H$,$G$-$^$9(B</p> <pre> @@ -188,7 +194,7 @@ <li><code>support\rotatelogs.dsp</code></li> </ul> - <p>Apache $B$,%3%s%Q%$%k$G$-$?$i%5!<%P!<%k!<%H%G%#%l%/%H%j$K%$%s%9%H!<%k(B + <p>Apache $B$,%3%s%Q%$%k$G$-$?$i%5!<%P%k!<%H%G%#%l%/%H%j$K%$%s%9%H!<%k(B $B$9$kI,MW$,$"$j$^$9!#%G%U%)%k%H$O8=:_$N%O!<%I%G%#%9%/$N%G%#%l%/%H%j(B <code>\Apache</code> $B$G$9!#(B</p> diff --git a/usr.sbin/httpd/htdocs/manual/windows.html.ja.jis b/usr.sbin/httpd/htdocs/manual/windows.html.ja.jis index 395d951be66..29bf4157f47 100644 --- a/usr.sbin/httpd/htdocs/manual/windows.html.ja.jis +++ b/usr.sbin/httpd/htdocs/manual/windows.html.ja.jis @@ -7,7 +7,7 @@ <title>Microsoft Windows $B$G$N(B Apache $B$N;HMQ(B</title> </head> - <!-- English revision: 1.56 --> + <!-- English revision: 1.57 --> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#ffffff" text="#000000" link="#0000ff" @@ -319,9 +319,9 @@ httpd.conf $B%U%!%$%k$NJ}$,4IM}$d8!::$,4JC1$J$3$H$K5$$E$/$G$7$g$&!#(B</p> - <p>$B3+;O8e$O(B Apache $B$O@_Dj%U%!%$%k$G(B <samp>Port</samp>, + <p>$B3+;O8e$O(B Apache $B$O(B($B@_Dj%U%!%$%k$G(B <samp>Port</samp>, <samp>Listen</samp> $B$^$?$O(B <samp>BindAddress</samp> - $B%G%#%l%/%F%#%V$rJQ99$7$F$$$J$1$l$P(B + $B%G%#%l%/%F%#%V$rJQ99$7$F$$$J$1$l$P(B) ($B%3%s%=!<%k%&%#%s%I%&$G$b%5!<%S%9$G$b(B) 80 $BHV%]!<%H$r(B Listen $B$7$F<B9T$5$l$^$9!#%V%i%&%6$r5/F0$7!"$3$N(B URL</p> <pre> |