Apache2
Web Server for linux.
Paths:
/etc/apache2/sites-available
/etc/apache2/sites-enabled (symbolic links to sites-available/*.conf files)
Virtual Hosts
Apache allows to have multiple web sites on the same server. To do this go to sites-available and create a
.conf file for each host you whant containing the following:
<VirtualHost *:80>
ServerAdmin rafael@herrerosolis.com
DocumentRoot /var/www/webfolder
ServerName www.yourwebpagename.com
ServerAlias www.yourwebpagename.com
ErrorLog /var/www/yourwebfolder/logs/error.log
# Posible values include: debug, info, notice, warn, error, crit.
# alert, emerg.
CustomLog /var/www/yourwebfolder/logs/access.log combined
</VirtualHost>
You should also enter in your domain administration panel and create the CNAMES to redirect trafic
to the public ip of this server
Basic SSL VirtualHost:
<VirtualHost *:80>
ServerName home.rra.lan
ServerAdmin webmaster@rra.lan
DocumentRoot /var/www/home.rra.lan
Redirect permanent / https://home.rra.lan
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName home.rra.lan
ServerAdmin webmaster@rra.lan
DocumentRoot /var/www/home.rra.lan
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateKeyFile /etc/ssl/private/home.rra.lan.key
SSLCertificateFile /etc/ssl/certs/home.rra.lan.crt
SSLCertificateChainFile /etc/ssl/certs/FreeIPA-CA.crt
</VirtualHost>
Redirect HTTP to HTTPS
sudo a2enmod rewrite
sudo nano /etc/apache2/sites-available/redirect_HTTP_to_HTTPS.conf
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo ln -s /etc/apache2/sites-available/redirect_HTTP_to_HTTPS.conf /etc/apache2/sites-enable/redirect_HTTP_to_HTTPS.conf
Authentication
Create user account with:
htpasswd -c /usr/local/apache/passwd/passwords rbowen
Protect with the directory directive:
<Directory "/usr/local/apache/htdocs/secret">
AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile "/usr/local/apache/passwd/passwords"
# Require user rbowen
Require valid-user
</Directory>
Reverse Proxy
a2enmod proxy proxy_http # HTTP
a2enmod proxy proxy_ftp # FTP
a2enmod proxy proxy_html # rewrite HTML links in proxy address space
a2enmod proxy proxy_ajp # Tomcat
a2enmod proxy
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
VirtualHost ProxyPass
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@rra.lan
ServerName splunk.rra.lan
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ServerAlias splunk.rra.lan
SSLEngine on
SSLCertificateFile /etc/ssl/certs/splunk.rra.lan.crt
SSLCertificateKeyFile /etc/ssl/private/splunk.rra.lan.key
<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
# SSLProxyEngine on
ProxyPass / http://0.0.0.0:8000/
ProxyPassReverse / http://0.0.0.0:8000/
</VirtualHost>
</IfModule>
apachectl
sudo apachectl configtest
https://httpd.apache.org/docs/2.4/programs/apachectl.html
See more options at: