Assume we want to serve webpages for two domains, example.com and example.org and these pages should be available with and without the ‘www’, so from www.example.com, example.com, www.example.org and example.org. In addition, clients connecting directly to our IP address, instead of using these domain names, should get an error message (404 Not Found) or short warning html message. These clients are probably just worms trying to spread through our webserver, so we don’t want to waste bandwidth on them. We start off by making some directories.
mkdir /var/www/htdocs/ip_address mkdir /var/www/htdocs/example.com mkdir /var/www/htdocs/example.org
Last thing we have to do is edit the configuration file. On OpenBSD, the Apache configuration can be found in /var/www/conf/httpd.conf.
NameVirtualHost * <VirtualHost *> DocumentRoot /htdocs/ip_address ErrorLog logs/ip_address-error_log CustomLog logs/ip_address-access_log common </VirtualHost> <VirtualHost *> ServerAdmin webmaster@example.com DocumentRoot /htdocs/example.com ServerName www.example.com ErrorLog logs/example.com-error_log CustomLog logs/example.com-access_log common </VirtualHost> <VirtualHost *> ServerAdmin webmaster@example.com DocumentRoot /htdocs/example.com ServerName example.com ErrorLog logs/example.com-error_log CustomLog logs/example.com-access_log common </VirtualHost> <VirtualHost *> ServerAdmin webmaster@example.org DocumentRoot /htdocs/example.org ServerName www.example.org ErrorLog logs/example.org-error_log CustomLog logs/example.org-access_log common </VirtualHost> <VirtualHost *> ServerAdmin webmaster@example.org DocumentRoot /htdocs/example.org ServerName example.org ErrorLog logs/example.org-error_log CustomLog logs/example.org-access_log common </VirtualHost>