Search code examples
apachehttphttp-redirecthttpsreverse-proxy

How to force redirect http to https on a apache reverse proxy server?


I have an apache reverse proxy server with http and https services. I want to redirect http to https forcible. What should i configure the config file?


Solution

  • Recommended and also safer way is using VirtualHost:

    <VirtualHost *:80>
       ServerName www.example.com
       Redirect permanent / https://www.example.com/
    </VirtualHost>
    

    or

    <VirtualHost *:80>
       ServerName www.example.com
       Redirect permanent /login https://www.example.com/login
    </VirtualHost>
    

    The other way is using mod_rewrite:

    RewriteEngine On
    # This will enable the Rewrite capabilities
    
    RewriteCond %{HTTPS} !=on
    # This checks to make sure the connection is not already HTTPS
    
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
    # This rule will redirect users from their original location, to the same location but using HTTPS.
    # i.e.  http://www.example.com/foo/ to https://www.example.com/foo/
    # The leading slash is made optional so that this will work either in httpd.conf
    # or .htaccess context
    

    As I said, Apache recommends using VirtualHost config.

    Examples taken from:

    https://wiki.apache.org/httpd/RedirectSSL

    https://wiki.apache.org/httpd/RewriteHTTPToHTTPS