]> granicus.if.org Git - apache/blobdiff - docs/manual/upgrading.xml
Rebuild.
[apache] / docs / manual / upgrading.xml
index bf615c5f928744a6b843d0ed17723cfe9d9c8f03..705c47731140c467b16482523f3afcbdf99d3c01 100644 (file)
@@ -78,7 +78,7 @@
 
       <li>configure: By default, only a basic set of modules is loaded. The
       other <directive>LoadModule</directive> directives are commented
-      out.</li>
+      out in the configuration file.</li>
 
       <li>configure: the "most" module set gets built by default</li>
 
     which the authorization directives are applied.</p>
 
     <p>Directives that control how authorization modules respond when they don't match
-    the authenticated user have been removed: This includes 
-    AuthzLDAPAuthoritative, AuthzDBDAuthoritative, AuthzDBMAuthoritative, 
+    the authenticated user have been removed: This includes
+    AuthzLDAPAuthoritative, AuthzDBDAuthoritative, AuthzDBMAuthoritative,
     AuthzGroupFileAuthoritative, AuthzUserAuthoritative,
     and AuthzOwnerAuthoritative.   These directives have been replaced by the
-    more expressive <directive module="mod_authz_core">RequireAny</directive>, 
+    more expressive <directive module="mod_authz_core">RequireAny</directive>,
     <directive module="mod_authz_core">RequireNone</directive>, and
     <directive module="mod_authz_core">RequireAll</directive>.</p>
 
-    <p>If you use <module>mod_authz_dbm</module>, you must port your 
+    <p>If you use <module>mod_authz_dbm</module>, you must port your
     configuration to use <code>Require dbm-group ...</code> in place
     of <code>Require group ...</code>.</p>
 
       although for compatibility with old configurations, the new
       module <module>mod_access_compat</module> is provided.</p>
 
+      <note><title>Mixing old and new directives</title>
+      <p>Mixing old directives like <directive
+      module="mod_access_compat">Order</directive>, <directive
+      module="mod_access_compat">Allow</directive> or <directive
+      module="mod_access_compat">Deny</directive> with new ones like
+      <directive
+      module="mod_authz_core">Require</directive> is technically possible 
+      but discouraged. <module>mod_access_compat</module> was created to support 
+      configurations containing only old directives to facilitate the 2.4 upgrade. 
+      Please check the examples below to get a better idea about issues that might arise.
+      </p>
+      </note>
+
       <p>Here are some examples of old and new ways to do the same
       access control.</p>
 
@@ -187,6 +200,61 @@ Allow from example.org
         Require host example.org
         </highlight>
       </example>
+
+      <p>In the following example, mixing old and new directives leads to 
+      unexpected results.</p>
+      <example>
+        <title>Mixing old and new directives: NOT WORKING AS EXPECTED</title>
+          <highlight language="config">
+DocumentRoot "/var/www/html"
+
+&lt;Directory "/"&gt;
+    AllowOverride None
+    Order deny,allow
+    Deny from all
+&lt;/Directory&gt;
+
+&lt;Location "/server-status"&gt;
+    SetHandler server-status
+    Require 127.0.0.1
+&lt;/Location&gt;
+
+access.log - GET /server-status 403 127.0.0.1
+error.log - AH01797: client denied by server configuration: /var/www/html/server-status
+          </highlight>
+      </example>
+      <p>Why httpd denies access to servers-status even if the configuration seems to allow it?
+        Because <module>mod_access_compat</module> directives take precedence
+        over the <module>mod_authz_host</module> one in this configuration 
+        <a href="sections.html#merging">merge</a> scenario.</p>
+
+      <p>This example conversely works as expected:</p>
+
+      <example>
+        <title>Mixing old and new directives: WORKING AS EXPECTED</title>
+        <highlight language="config">
+DocumentRoot "/var/www/html"
+
+&lt;Directory "/"&gt;
+    AllowOverride None
+    Require all denied
+&lt;/Directory&gt;
+
+&lt;Location "/server-status"&gt;
+    SetHandler server-status
+    Order deny,allow
+    Deny from all
+    Allow From 127.0.0.1
+&lt;/Location&gt;
+
+access.log - GET /server-status 200 127.0.0.1
+        </highlight>
+      </example> 
+      <p>So even if mixing configuration is still
+        possible, please try to avoid it when upgrading: either keep old directives and then migrate
+        to the new ones on a later stage or just migrate everything in bulk.  
+      </p>
     </section>
 
     </section>
@@ -256,6 +324,12 @@ Allow from example.org
         <code>jsessionid</code>.
         </li>
 
+        <li><module>mod_cache</module>: The second parameter to
+        <directive module="mod_cache">CacheEnable</directive> only
+        matches forward proxy content if it begins with the correct
+        protocol. In 2.2 and earlier, a parameter of '/' matched all
+        content.</li>
+
         <li><module>mod_ldap</module>: <directive
         module="mod_ldap">LDAPTrustedClientCert</directive> is now
         consistently a per-directory setting only.  If you use this
@@ -290,6 +364,13 @@ Allow from example.org
         module="core">LogLevel</directive> configuration.
         </li>
 
+        <li><module>mod_proxy_scgi</module>: The default setting for
+        <code>PATH_INFO</code> has changed from httpd 2.2, and
+        some web applications will no longer operate properly with
+        the new <code>PATH_INFO</code> setting.  The previous setting
+        can be restored by configuring the <code>proxy-scgi-pathinfo</code>
+        variable.</li>
+
         <li><module>mod_ssl</module>: CRL based revocation checking
         now needs to be explicitly configured through <directive
         module="mod_ssl">SSLCARevocationCheck</directive>.
@@ -306,6 +387,14 @@ Allow from example.org
         is no longer supported.  Data is always logged at <directive
         module="core">LogLevel</directive> <code>trace7</code>.</li>
 
+        <li>On Unix platforms, piped logging commands configured using
+        either <directive module="core">ErrorLog</directive> or
+        <directive module="mod_log_config">CustomLog</directive> were invoked using
+        <code>/bin/sh -c</code> in 2.2 and earlier.  In 2.4 and later,
+        piped logging commands are executed directly.  To restore the
+        old behaviour, see the <a href="logs.html#piped">piped logging
+        documentation</a>.</li>
+
       </ul>
     </section>
   </section>
@@ -325,7 +414,7 @@ Allow from example.org
       no longer supported. <directive module="mod_ssl">SSLProxyCheckPeerCN
          </directive> and <directive module="mod_ssl">SSLProxyCheckPeerExpire
          </directive> now default to On, causing proxy requests to HTTPS hosts
-         with bad or outdated certificates to fail with a 502 status code (Bad 
+         with bad or outdated certificates to fail with a 502 status code (Bad
          gateway)</li>
 
       <li><program>htpasswd</program> now uses MD5 hash by default on
@@ -350,9 +439,9 @@ Allow from example.org
       </li>
 
       <li>The functionality provided by <code>mod_authn_alias</code>
-      in previous versions (i.e., the <directive 
+      in previous versions (i.e., the <directive
       module="mod_authn_core">AuthnProviderAlias</directive> directive)
-      has been moved into <module>mod_authn_core</module>.  
+      has been moved into <module>mod_authn_core</module>.
       </li>
 
       <li><module>mod_cgid</module> uses the servers <directive module="core"
@@ -385,9 +474,9 @@ Allow from example.org
  - load module <module>mod_access_compat</module>, or update configuration to 2.4 authorization directives.</li>
       <li><code>Ignoring deprecated use of DefaultType in line NN of /path/to/httpd.conf</code> - remove <directive module="core">DefaultType</directive>
       and replace with other configuration settings.</li>
-      <li><code>Invalid command 'AddOutputFilterByType', perhaps misspelled 
+      <li><code>Invalid command 'AddOutputFilterByType', perhaps misspelled
       or defined by a module not included in the server configuration
-      </code> - <directive module="mod_filter">AddOutputFilterByType</directive> 
+      </code> - <directive module="mod_filter">AddOutputFilterByType</directive>
       has moved from the core to mod_filter, which must be loaded.</li>
     </ul></li>
     <li>Errors serving requests: