Apache 2 Config
Home |
Table of Contents
1 Force SSL on specific domain
## Force HTTPS for .COM domain ## ## IF header X-Forwarde-Proto NOT set to https ## (ie. SSL already loaded from load balancer or nginx proxy) RewriteCond %{HTTP:X-Forwarded-Proto} !https ## AND Not requesting HTTPS directly to local apache RewriteCond %{HTTPS} off ## AND DOMAIN is www.example.com OR just example.com RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] ## THEN Redirect to the HTTPS version RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Note: chaining RewriteCond uses an implicit [AND]. It is possible to use [OR] instead at the end of the RewriteCond
2 Remote IP Header
/etc/apache2/sites-available/test.example.com.conf
#http://httpd.apache.org/docs/current/mod/mod_remoteip.html#remoteipheader RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 172.17.0.1/32 ## Custom Log to correctly print the remote IP when begind a proxy ErrorLog ${APACHE_LOG_DIR}/www.example.com.error.log #CustomLog ${APACHE_LOG_DIR}/www.example.com.access.log combined # http://httpd.apache.org/docs/current/mod/mod_remoteip.html#remoteipheader LogFormat "%a %{c}a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" forwarded CustomLog ${APACHE_LOG_DIR}/www.example.com.access.log forwarded
3 Ask for password, but allow a specific IP (Apache 2.4)
<If "%{REMOTE_ADDR} != '54.243.219.253'"> AuthType Basic AuthName "Protected Login" AuthUserFile /home/vhosts/htpasswdMage Require valid-user </If>
4 Apache proxy to Docker container - SSL to SSL
at the command prompt:
# a2enmod proxy_http # a2enmod proxy_html To activate the new configuration, you need to run: systemctl restart apache2
/etc/apache2/sites-available/test.example.com.conf
<VirtualHost *:80> ServerName test.example.com #ServerAlias test2.example.com ServerAdmin ti@example.com # Proxy to Docker container ProxyRequests Off ProxyPreserveHost On ProxyPass "/" "http://172.17.0.2/" ProxyPassReverse "/" "http://172.17.0.2/" # Turn off mod_pagespeed ModPagespeed off # Redirect / https://test.example.com/ # DocumentRoot /home/vhosts/test.example.com/public # <Directory /home/vhosts/test.example.com/public> # Options Indexes FollowSymLinks MultiViews # AllowOverride All # Require all granted # </Directory> # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/test.example.com.error.log CustomLog ${APACHE_LOG_DIR}/test.example.com.access.log combined </VirtualHost> <VirtualHost *:443> ServerName test.example.com #ServerAlias test2.example.com ServerAdmin ti@example.com ######################################## # Proxy to Docker container ######################################## # Allows SSL to SSL SSLProxyEngine On ProxyRequests Off ProxyPreserveHost On ProxyPass "/" "https://172.17.0.2/" ProxyPassReverse "/" "https://172.17.0.2/" RequestHeader set X-Forwarded-Proto "https" RequestHeader set X-Forwarded-Port "443" # Turn off mod_pagespeed ModPagespeed off # DocumentRoot /home/vhosts/test.example.com/public # <Directory /home/vhosts/test.example.com/public> # Options Indexes FollowSymLinks MultiViews # AllowOverride All # Require all granted # </Directory> ErrorLog ${APACHE_LOG_DIR}/test.example.com.error.log CustomLog ${APACHE_LOG_DIR}/test.example.com.access.log combined # SSL Engine Switch: # Enable/Disable SSL for this virtual host. SSLEngine on SSLCertificateKeyFile /etc/apache2/ssl/test.example.com/test.example.com.2048.key SSLCertificateFile /etc/apache2/ssl/test.example.com/test_example_com.crt SSLCACertificateFile /etc/apache2/ssl/test.example.com/pushmaze_example_com.ca-bundle SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown SSLProtocol ALL -SSLv2 -SSLv3 SSLHonorCipherOrder on SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4 <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # MSIE 7 and newer should be able to use keepalive BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet