How to Set Up Apache Virtual Hosts on CentOS 8

Apache allows you to host multiple domains and websites on a single IP address. This is provided by the virtual host mechanism. Each of them has an individual configuration.

In this tutorial, we will configure Apache virtual hosts. We recently installed the lamp stack on CentOS 8. Start by installing Apache and continue with this guide.

Create folders

Create a folder for each website in the /var/www/.

mkdir /var/www/domain-name.com

Make apache user the owner of this folder.

chown apache:apache /var/www/domain-name.com/

Configuration files for virtual hosts

Apache works with all files with the .conf extension from the /etc/httpd/conf.d/ folder. Create a configuration file for your site.

nano /etc/httpd/conf.d/domain-name.com.conf

Insert the following lines there. Replace domain-name.com with your domain name.

<virtualhost *:80>
ServerName domain-name.com
ServerAlias www.domain-name.com
DocumentRoot /var/www/domain-name.com
ErrorLog /var/log/httpd/domain-name.com-error.log
CustomLog /var/log/httpd/domain-name.com-access.log combined

If you want multiple domain names to work with the same content, just list them separated by a space in the ServerAlias line.

ServerAlias www.domain-name.com domain-name2.com domain-name3.com

Save and close the file, restart the service.

systemctl restart httpd

Apache virtual host testing

To check the operation of the virtual host, place an index.html file with some content in the site’s home directory.

echo "<My first Apache virtual host>" > /var/www/domain-name.com/index.html

Open the server’s domain name or IP address in the browser. You will see the contents of the index.html file.