Commit 8592ce43 authored by Ruediger Pluem's avatar Ruediger Pluem
Browse files

Merge r399947, r406697 from trunk:

* Add optional 'scheme://' prefix to ServerName directive.  For
  'https', mod_http returns "https" for the ap_hook_http_scheme and
  DEFAULT_HTTPS_PORT for ap_hook_default_port.  This fixes Redirect
  responses to requests for directories without a trailing slash
  when httpd runs behind a proxy or offload device that processes
  SSL.  It also enables support for Subversion in that
  configuration.  This change is completely backwards compatible
  and passes the perl-framework.  Minor mmn bump because I add a
  field to server_rec.

* Document r399947, addition of optional scheme:// to ServerName directive

PR: 33398
Submitted by: sctemme
Reviewed by: sctemme, rpluem, wrowe


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@425051 13f79535-47bb-0310-9956-ffa450edef68
parent 0a6ee5d5
Loading
Loading
Loading
Loading
+8 −0
Changes for CHANGES: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
                                                        -*- coding: utf-8 -*-
Changes with Apache 2.2.3
  *) Add optional 'scheme://' prefix to ServerName directive,
     allowing correct determination of the canonical server URL
     for use behind a proxy or offload device handling SSL; fixing
     redirect generation in those cases. PR 33398. [Sander Temme]
  *) Added server_scheme field to server_rec for above. Minor MMN bump.
     [Sander Temme]
  *) mod_cache: Make caching of reverse SSL proxies possible again. PR 39593.
     [Ruediger Pluem, Joe Orton]
+0 −10
Changes for STATUS: 0 added lines, 10 removed lines.
Original line number Diff line number Diff line
@@ -76,16 +76,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

    * Add optional 'scheme://' part to ServerName directive for cases
      where httpd runs behind an external SSL processor and has to
      learn from its configuration how to generate correct
      self-referential URLs. 
      Code: 
      http://people.apache.org/~sctemme/servername_22x.patch
      Documentation:
      http://svn.apache.org/viewcvs.cgi?diff_format=h&view=rev&rev=406697
      +1 sctemme, rpluem, wrowe

PATCHES PROPOSED TO BACKPORT FROM TRUNK:

    * mod_isapi: Simply backport the host of fixes for compilation on unix,
+19 −8
Changes for docs/manual/mod/core.html.en: 19 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -2765,7 +2765,7 @@ to name-virtual hosts</td></tr>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Hostname and port that the server uses to identify
itself</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ServerName <var>fully-qualified-domain-name</var>[:<var>port</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ServerName [<var>scheme</var>://]<var>fully-qualified-domain-name</var>[:<var>port</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
@@ -2773,7 +2773,8 @@ itself</td></tr>
     directive supersedes the functionality of the <code class="directive">Port</code>
     directive from version 1.3.</td></tr>
</table>
    <p>The <code class="directive">ServerName</code> directive sets the hostname and
    <p>The <code class="directive">ServerName</code> directive sets the
    request scheme, hostname and
    port that the server uses to identify itself.  This is used when
    creating redirection URLs. For example, if the name of the
    machine hosting the web server is <code>simple.example.com</code>,
@@ -2788,11 +2789,10 @@ itself</td></tr>
    <p>If no <code class="directive">ServerName</code> is specified, then the
    server attempts to deduce the hostname by performing a reverse
    lookup on the IP address. If no port is specified in the
    <code class="directive">ServerName</code>, then the server will use the port
    from the incoming
    request. For optimal reliability and predictability, you should
    specify an explicit hostname and port using the
    <code class="directive">ServerName</code> directive.</p>
    <code class="directive">ServerName</code>, then the server will use the
    port from the incoming request. For optimal reliability and
    predictability, you should specify an explicit hostname and port
    using the <code class="directive">ServerName</code> directive.</p>

    <p>If you are using <a href="../vhosts/name-based.html">name-based virtual hosts</a>,
    the <code class="directive">ServerName</code> inside a
@@ -2800,14 +2800,25 @@ itself</td></tr>
    section specifies what hostname must appear in the request's
    <code>Host:</code> header to match this virtual host.</p>


    <p>Sometimes, the server runs behind a device that processes SSL,
    such as a reverse proxy, load balancer or SSL offload
    appliance. When this is the case, specify the
    <code>https://</code> scheme and the port number to which the
    clients connect in the <code class="directive">ServerName</code> directive
    to make sure that the server generates the correct
    self-referential URLs. 
    </p>

    <p>See the description of the
    <code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code> and
    <code class="directive"><a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code>directives for
    settings which determine whether self-referential URL's (e.g., by the
    settings which determine whether self-referential URLs (e.g., by the
    <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> module) will refer to the
    specified port, or to the port number given in the client's request.
    </p>


<h3>See also</h3>
<ul>
<li><a href="../dns-caveats.html">Issues Regarding DNS and
+19 −8
Changes for docs/manual/mod/core.xml: 19 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -2752,7 +2752,7 @@ to name-virtual hosts</description>
<name>ServerName</name>
<description>Hostname and port that the server uses to identify
itself</description>
<syntax>ServerName <var>fully-qualified-domain-name</var>[:<var>port</var>]</syntax>
<syntax>ServerName [<var>scheme</var>://]<var>fully-qualified-domain-name</var>[:<var>port</var>]</syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<compatibility>In version 2.0, this
@@ -2760,7 +2760,8 @@ itself</description>
     directive from version 1.3.</compatibility>

<usage>
    <p>The <directive>ServerName</directive> directive sets the hostname and
    <p>The <directive>ServerName</directive> directive sets the
    request scheme, hostname and
    port that the server uses to identify itself.  This is used when
    creating redirection URLs. For example, if the name of the
    machine hosting the web server is <code>simple.example.com</code>,
@@ -2775,11 +2776,10 @@ itself</description>
    <p>If no <directive>ServerName</directive> is specified, then the
    server attempts to deduce the hostname by performing a reverse
    lookup on the IP address. If no port is specified in the
    <directive>ServerName</directive>, then the server will use the port
    from the incoming
    request. For optimal reliability and predictability, you should
    specify an explicit hostname and port using the
    <directive>ServerName</directive> directive.</p>
    <directive>ServerName</directive>, then the server will use the
    port from the incoming request. For optimal reliability and
    predictability, you should specify an explicit hostname and port
    using the <directive>ServerName</directive> directive.</p>

    <p>If you are using <a
    href="../vhosts/name-based.html">name-based virtual hosts</a>,
@@ -2788,13 +2788,24 @@ itself</description>
    section specifies what hostname must appear in the request's
    <code>Host:</code> header to match this virtual host.</p>


    <p>Sometimes, the server runs behind a device that processes SSL,
    such as a reverse proxy, load balancer or SSL offload
    appliance. When this is the case, specify the
    <code>https://</code> scheme and the port number to which the
    clients connect in the <directive>ServerName</directive> directive
    to make sure that the server generates the correct
    self-referential URLs. 
    </p>

    <p>See the description of the
    <directive module="core">UseCanonicalName</directive> and
    <directive module="core">UseCanonicalPhysicalPort</directive>directives for
    settings which determine whether self-referential URL's (e.g., by the
    settings which determine whether self-referential URLs (e.g., by the
    <module>mod_dir</module> module) will refer to the
    specified port, or to the port number given in the client's request.
    </p>

</usage>

<seealso><a href="../dns-caveats.html">Issues Regarding DNS and
+1 −1
Changes for docs/manual/mod/quickreference.html.en: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -613,7 +613,7 @@ messages sent to the client</td></tr>
<tr><td><a href="core.html#serveralias">ServerAlias <var>hostname</var> [<var>hostname</var>] ...</a></td><td></td><td>v</td><td>C</td></tr><tr><td class="descr" colspan="4">Alternate names for a host used when matching requests
to name-virtual hosts</td></tr>
<tr class="odd"><td><a href="mpm_common.html#serverlimit">ServerLimit <var>number</var></a></td><td></td><td>s</td><td>M</td></tr><tr class="odd"><td class="descr" colspan="4">Upper limit on configurable number of processes</td></tr>
<tr><td><a href="core.html#servername">ServerName <var>fully-qualified-domain-name</var>[:<var>port</var>]</a></td><td></td><td>sv</td><td>C</td></tr><tr><td class="descr" colspan="4">Hostname and port that the server uses to identify
<tr><td><a href="core.html#servername">ServerName [<var>scheme</var>://]<var>fully-qualified-domain-name</var>[:<var>port</var>]</a></td><td></td><td>sv</td><td>C</td></tr><tr><td class="descr" colspan="4">Hostname and port that the server uses to identify
itself</td></tr>
<tr class="odd"><td><a href="core.html#serverpath">ServerPath <var>URL-path</var></a></td><td></td><td>v</td><td>C</td></tr><tr class="odd"><td class="descr" colspan="4">Legacy URL pathname for a name-based virtual host that
is accessed by an incompatible browser</td></tr>
Loading