How to list enabled VirtualHosts in Apache on GNU
/ Linux and FreeBSD
I decided to start this post with this picture I found on
onlamp.com article called "Simplify Your Life with Apache
VirtualHosts .I put it here because I thing it illustrates quite
well Apache's webserver internal processes. The picture gives also
a good clue when Virtual Hosts gets loaded, anways I'll go back to
the main topic of this article, hoping the above picture gives some
more insight on how Apache works.;
Here is
how to list all the enabled virtualhosts in Apache on
Debian GNU / Linux serving pages:
server:~# /usr/sbin/ apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:* is a NameVirtualHost
default server exampleserver1.com
(/etc/apache2/sites-enabled/000-default:2)
port * namevhost exampleserver2.com
(/etc/apache2/sites-enabled/000-default
port * namevhost exampleserver3.com
(/etc/apache2/sites-enabled/exampleserver3.com:1)
port * namevhost exampleserver4.com
(/etc/apache2/sites-enabled/exampleserver4.com:1)
...
Syntax OK
The line
*:* is a NameVirtualHost, means the Apache
VirtualHosts module will be able to use Virtualhosts listening on
any IP address (configured on the host), on any port configured for
the respective Virtualhost to listen on.
The next output line:
port * namevhost exampleserver2.com
(/etc/apache2/sites-enabled/000-default
Shows requests
to the domain on any port will be accepted (
port *) by the
webserver as well as indicates the <VirtualHost> in the file
/etc/apache2/sites-enabled/000-default:2 is defined on line
2 (e.g.
:2).
To see the same
all enabled VirtualHosts on FreeBSD the
command to be issued is:
freebsd# pcfreak# /usr/local/sbin/httpd -S VirtualHost
configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server pc-freak.net
(/usr/local/etc/apache2/httpd.conf:1218)
port 80 namevhost pc-freak.net
(/usr/local/etc/apache2/httpd.conf:1218)
port 80 namevhost pcfreak.afraid.org
(/usr/local/etc/apache2/httpd.conf:1353)
...
Syntax OK
On Fedora and the other Redhat Linux distributions, the
apache2ctl -S should be displaying the enabled
Virtualhosts.
One might wonder, what might be the reason for someone to want to
check the VirtualHosts which are loaded by the Apache server, since
this could be also checked if one reviews Apache / Apache2's config
file. Well the main advantage is that checking directly into the
file might sometimes take more time, especially if the file
contains thousands of similar named virtual host domains. Another
time using the
-S option is better would be if some enabled
VirtualHost in a config file seems to not be accessible. Checking
directly if Apache has properly loaded the VirtualHost directives
ensures, there is no problem with loading the VirtualHost. Another
scenario is if there are multiple Apache config files / installs
located on the system and you're unsure which one to check for the
exact list of Virtual domains loaded.