DevHeads.net

Strrange behavior of VirtualHosts in Apache (CentOS6)

Hello,

there is a short explanation about virtual hosts in Apache ...
<a href="https://wiki.centos.org/TipsAndTricks/ApacheVhostDefault" title="https://wiki.centos.org/TipsAndTricks/ApacheVhostDefault">https://wiki.centos.org/TipsAndTricks/ApacheVhostDefault</a>

the `hostname` gives a different donmain name than what should be hosted ...
e.g. `hostname` is host.example.org and the domain to be hosted is
example.com, so I did this:

<VirtualHost 1.2.3.4:80>
ServerName host.example.org
DocumentRoot /var/www/default
</VirtualHost>

# used to get let's encrypt for the mail server
<VirtualHost 1.2.3.4:80>
ServerName mail.example.org
ServerAlias smtp.example.org
DocumentRoot /var/www/mail
</VirtualHost>

<VirtualHost 1.2.3.4:80>
ServerName <a href="http://www.example.com" title="www.example.com">www.example.com</a>
DocumentRoot /var/www/domain
</VirtualHost>

<VirtualHost 1.2.3.4:80>
ServerAlias *.example.com
DocumentRoot /var/www/catchall
</VirtualHost>

the DocumentRoot directories are empty,
only in /var/www/default I have a PHP script: host.php
<?php
header( "Content-type: text/plain" );
printf( "Host: '%s'\n", $_SERVER['HTTP_HOST'] );
?>

now the strange behavior;

<a href="http://mail.example.org/" title="http://mail.example.org/">http://mail.example.org/</a> <-- works
<a href="http://smtp.example.org/" title="http://smtp.example.org/">http://smtp.example.org/</a> <-- doen't work
<a href="http://smtp.example.org/host.php" title="http://smtp.example.org/host.php">http://smtp.example.org/host.php</a> <-- gives the HTTP_HOST (PHP-script),
but why?

<a href="http://www.example.com/" title="http://www.example.com/">http://www.example.com/</a> <-- works
<a href="http://hello.example.com/" title="http://hello.example.com/">http://hello.example.com/</a> <-- doesn't work
<a href="http://hello.example.com/host.php" title="http://hello.example.com/host.php">http://hello.example.com/host.php</a> <-- gives the HTTP_HOST (PHP-script),
but why?

doesn't work does mean, that access/errors are logged in logfile of wrong
virtual host ...

where is my mistake;

Thanks,
Walter

Comments

Re: Strrange behavior of VirtualHosts in Apache (CentOS

By Joseph L. Casale at 11/13/2017 - 09:54

That page has not been updated since 2009, while it may be correct
there is no reason not to use the correct documentation, the section
of interest is short: <a href="https://httpd.apache.org/docs/2.4/vhosts/name-based.html" title="https://httpd.apache.org/docs/2.4/vhosts/name-based.html">https://httpd.apache.org/docs/2.4/vhosts/name-based.html</a>

So this becomes your default vhost when a match is not found and explains
why the php file is invoked when the order of specificity falls through.

Do you have the correct ip address in your vhost config? I would
bet if you read the log, you will see what is happening and how it differs from
what you expect.

Some more in-depth details at <a href="https://httpd.apache.org/docs/2.4/vhosts/details.html" title="https://httpd.apache.org/docs/2.4/vhosts/details.html">https://httpd.apache.org/docs/2.4/vhosts/details.html</a>

Re: Strrange behavior of VirtualHosts in Apache (CentOS

By Walter H. at 11/14/2017 - 03:52

On Mon, November 13, 2017 15:54, Joseph L. Casale wrote:
httpd -S lists all vhosts, and at last
'Syntax OK'

and exact this was the strange; I'm used to add the port number to
ServerAlias and this was the mistake ...
httpd -S, didn't realize this

I removed the port numbers from ServerAlias entries and now it works :-)

Greetings,
Walter