General
Show active Vhost configuration in Apache
apache2ctl -S
Enable vhost in apache
a2ensite $VHOST.conf
Disable vhost in apache
a2dissite $VHOST.conf
Enable SSL in apache
a3enmod ssl
Check for errors in apache
apache2ctl configtest
Basic Auth with Apache Virtualhost
Note This will NOT work while using wordpress with .htaccess file Install Apache utils package
apt-get update
apt-get install apache2-utils
create password file and user
htpasswd -c /etc/apache2/.htpasswd $USERNAME
LEAVE OFF -c for additional users
htpasswd /etc/apache2/.htpasswd $USERNAME2
Must be added to the ‘Directory’ section of the Apache VirtualHost file
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
check apache configuration
apache2ctl configtest
restart apache
systemctl restart apache
if seeing misconfiguration errors, may need to update ownership of .htpasswd
chown www-data:www-data /etc/apache2/.htpasswd
HTTP Vhost for WordPress
<VirtualHost *:80>
ServerAdmin $EMAIL
ServerName $FQDN
ServerAlias www.$FQDN
DocumentRoot /var/www/$HOSTNAME
<Directory /var/www/$HOSTNAME/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
HTTPS Vhost for WordPress
<VirtualHost *:80>
ServerName $FQDN
ServerAlias www.$FQDN
Redirect permanent / https://$FQDN/
</VirtualHost>
<VirtualHost *:443>
ServerAdmin $EMAIL
DocumentRoot /var/www/$HOSTNAME
ServerName $FQDN
ServerAlias www.$FQDN
SSLEngine on
SSLCertificateFile $PATH_TO_CERTIFICATE
SSLCertificateKeyFile $PATH_TO_PRIVATE_KEY
<Directory /var/www/$HOSTNAME/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Will need to enable the Apache SSL Mod for HTTPS to work
sudo a2enmod ssl
HTTP Proxy Vhost
This VHost file will accept requests at $FQDN and then redirect them to the address listed in Proxy/ProxyPass and then applies the $FQDN in the address bar.
<VirtualHost *:80>
ServerName $FQDN
ProxyRequests Off
<Location />
ProxyPreserveHost On
ProxyPass http://137.184.11.237:8080/
ProxyPassReverse http://137.184.11.237:8080/
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Will need to enable the Apache Proxy Mod for this to work
sudo a2enmod proxy proxy_http
HTTPS Proxy Vhost
This works similarly to above except it will appply a SSL certificate as well.
<VirtualHost *:80>
ServerName storage.casat.org
Redirect Permanent / https://storage.casat.org/
</VirtualHost>
<VirtualHost *:443>
ServerName storage.casat.org
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/storage.casat.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/storage.casat.org/privkey.pem
ProxyRequests Off
<Location />
ProxyPreserveHost On
ProxyPass http://137.184.11.237:8080/
ProxyPassReverse http://137.184.11.237:8080/
</Location>
# uncomment for SSL
SSLProxyEngine On
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
This requires a few Apache Mods to be enabled to work
sudo a2enmod ssl proxy proxy_http
HTTPS Vhost w/ Basic Authentication
Note This will NOT work while using wordpress with .htaccess file Install Apache utils package
apt-get update
apt-get install apache2-utils
create password file and user
htpasswd -c /etc/apache2/htpasswd.users $USERNAME
LEAVE OFF -c for additional users
htpasswd /etc/apache2/htpasswd.users $USERNAME2
Must be added to the ‘Directory’ section of the Apache VirtualHost file
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/htpasswd.users
Require valid-user
check apache configuration
apache2ctl configtest
restart apache
systemctl restart apache
if seeing misconfiguration errors, may need to update ownership of .htpasswd
chown www-data:www-data /etc/apache2/htpasswd.users