Utilizing dynamic virtual hosts in the Apache web server enables administrators to efficiently manage a large number of domains without manually configuring each one individually. In this article, we'll focus on configuring dynamic virtual hosts in Apache on the CentOS 7 operating system using the mod_vhost_alias module.
Prerequisites
Before starting the configuration, ensure that:
- Apache web server is installed on CentOS 7.
- You have access to the server with superuser (root) privileges.
Installation and Activation of mod_vhost_alias
- Install Apache: If Apache is not yet installed, install it using the
yumcommand:sudo yum install httpd - Activate mod_vhost_alias: The
mod_vhost_aliasmodule is part of the standard Apache installation on CentOS 7. Verify that the module is installed and activated using the command:
If the module is installed, this command will return output confirming its activation. If not, you'll need to recompile Apache with this module, which is beyond the scope of this article.httpd -M | grep vhost_alias_module
Configuring Dynamic Virtual Hosts
-
Editing the configuration file: Open the main Apache configuration file for editing:
sudo vi /etc/httpd/conf/httpd.conf -
Adding configuration for dynamic virtual hosts: Append the following directives to the end of the file to enable dynamic virtual host configuration:
UseCanonicalName Off VirtualDocumentRoot /var/www/vhosts/%0/public_htmlIn this example,
%0represents the full domain name of the request (e.g.,example.com), and/var/www/vhosts/%0/public_htmlis the path where Apache looks for files for that domain. Adjust the path according to your directory structure. -
Restart Apache: After saving the changes in the configuration file, restart Apache to apply the new configuration:
sudo systemctl restart httpd
Testing the Configuration
- Adding a test domain: For testing purposes, add a line to the
/etc/hostsfile on your test machine that points the test domain to the IP address of your server. For example:192.0.2.1 example.com - Creating directory structure: On the server, create a directory corresponding to the test domain and place an
index.HTMLfile inside it:sudo mkdir -p /var/www/vhosts/example.com/public_html echo "Test page for example.com" | sudo tee /var/www/vhosts/example.com/public_html/index.html - Testing in the browser: Open a web browser and navigate to
http://example.com. You should see the content of theindex.htmlfile.
Configuring dynamic virtual hosts in Apache on CentOS 7 using the mod_vhost_alias module allows for efficient management of web domains without the need for manual configuration for each one. With dynamic mapping, you can easily expand your web services by adding new domains and corresponding directories without further server configuration.



