dgaudet     97/03/23 11:26:43

  Modified:    htdocs/manual  vhosts-in-depth.html
  Log:
  Added some more notes based on observations from Brent Holland
  <[EMAIL PROTECTED]>.
  
  Revision  Changes    Path
  1.2       +29 -9     apache/htdocs/manual/vhosts-in-depth.html
  
  Index: vhosts-in-depth.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/vhosts-in-depth.html,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -C3 -r1.1 -r1.2
  *** vhosts-in-depth.html      1997/03/20 23:31:45     1.1
  --- vhosts-in-depth.html      1997/03/23 19:26:42     1.2
  ***************
  *** 56,62 ****
    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).
    
    <p>
    All vhosts are stored in a list which is in the reverse order that
  --- 56,64 ----
    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
  ***************
  *** 118,126 ****
    
    <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 <i>ip-based</i> vhost or a <i>name-based</i> vhost.  A vhost is an
  ! ip-based vhost if none of the vhosts address set overlaps the main_server
  ! address set.  Otherwise it is considered a name-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>
  --- 120,130 ----
    
    <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 <i>ip-based</i> vhost or a <i>name-based</i> 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>
  ***************
  *** 141,147 ****
    <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, and the ip address matches and the port matches
    (taking into account wildcards).
    
    <p> If no vhosts are matched then the last occurance, if it appears,
  --- 145,151 ----
    <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 occurance, if it appears,
  ***************
  *** 185,191 ****
    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 probably a bug.)
    
    <p>
    If the port matches, then httpd scans the list of vhosts starting with
  --- 189,195 ----
    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
  ***************
  *** 199,206 ****
        <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.  <i>(n.b. this
  !     assumes Dean's "VirtualHost confusion" patch is accepted.)</i>
    
    <li> Compare the request hostname against the <code>ServerAlias</code>
        given for the vhost.
  --- 203,209 ----
        <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.
  ***************
  *** 275,281 ****
        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.)
    
    </ul>
    
  --- 278,301 ----
        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
  !     inadvertantly.  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>
    
    </ul>
    
  
  
  

Reply via email to