Fwd: FW: Virtual Host Setup Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric,

 

Thank you very much for your reply.

I have two requests:

 

http://serverone.tld
http://192.168.1.12

On the first one the request header Host is:  “Host: serverone.tld

And on the second one the request header Host is: “Host: 192.168.1.12

 

Now, I have run the httpd.exe –S command and the result is as follows:

 

Code:

VirtualHost configuration:

192.168.1.12:80        is a NameVirtualHost

         default server serverone.tld (D:/Apache22/conf/httpd.conf:51)

         port 80 namevhost serverone.tld (D:/Apache22/conf/httpd.conf:51)

         port 80 namevhost 192.168.1.12 (D:/Apache22/conf/httpd.conf:65)

 

So, I have one NameVirtualHost, 192.168.1.12:80. This NVH has three options: default, serverone.tld and 192.168.1.12.

 

The test that is failing is the one where “Host: 192.168.1.12”, so I will focus on this one. It seems to me that the Apache server cannot match the “Host: 192.168.1.12” with the ServerName (ServerName 192.168.1.12) and, because of this unexpected mismatch, it’s using the default virtual host for serving the request.

A simple test that confirms my suspicion involves changing the virtual host definition order in the configuration file:

 

Code:

Listen 192.168.1.12:80

NameVirtualHost 192.168.1.12:80

<VirtualHost 192.168.1.12:80>
    DocumentRoot "/Apache22/htdocs"
    ServerName 192.168.1.12
    ErrorLog "/Apache22/logs/192.168.1.12-error.log"
    CustomLog "/Apache22/logs/192.168.1.12-access.log" combined
</VirtualHost>

<VirtualHost 192.168.1.12:80>
    DocumentRoot "/Apache22/htdocs" 
    ServerName serverone.tld
    ErrorLog "/Apache22/logs/serverone-error.log"
    CustomLog "/Apache22/logs/serverone -access.log" combined
</VirtualHost>


Is this configuration, if one runs httpd.exe –S, the default server changed (as expected).

 

Code:

VirtualHost configuration:

192.168.1.12:80        is a NameVirtualHost

         default server 192.168.1.12 (D:/Apache22/conf/httpd.conf:60)

         port 80 namevhost 192.168.1.12 (D:/Apache22/conf/httpd.conf:60)

         port 80 namevhost serverone.tld (D:/Apache22/conf/httpd.conf:67)

 

With the above default virtual hots set to 192.168.1.12. the http://192.168.1.12 request is logged under the “correct” virtual host. Not because it’s matched. Just because the “correct” virtual host for the request happens to be the default.

 

Now, let’s see if I understood your answer correctly. You mention that the Host is compared to the address/hostname in the <virtualhost> itself. So, I believe you are saying that when the host is “Host: 192.168.1.12” it is compared to <VirtualHost 192.168.1.12:80> and that being a match with the first defined virtual host, it stops searching other virtual hosts, completely ignoring the ServerName field.

Is my reading your answer correctly?

Thank you.

 

John

 

From: Eric Covener [mailto:covener@xxxxxxxxx]
Sent: Saturday, February 13, 2016 3:57 PM
To: users@xxxxxxxxxxxxxxxx
Subject: Re: Virtual Host Setup Help

 

 

On Sat, Feb 13, 2016 at 6:43 AM, Meta Correio <meta.correio@xxxxxxxxx> wrote:

So, the question is, why does Apache place both requests under the same Virtual Host when, on a scenario using Virtual Hosts under the NameVirtualHost paradigm it should look at the Host: to decide what Virtual Host to use.

 

​There is an under-ocumented, less used/understood matching step for NVH where the Host is compared to the address/hostname in the <virtualhost> itself. This is what messes with your test using the IP address. 



 

--

Eric Covener
covener@xxxxxxxxx



[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux