I'm using HTTP and HTTPS listeners on my Classic Load Balancer. My Classic Load Balancer offloads SSL, and the backend connection listens on a single HTTP port (port 80). When I try to redirect traffic from HTTP to HTTPS (port 443), I receive the error 'ERR_TOO_MANY_REDIRECTS'. How do I resolve this error without changing my backend listener to port 443?
Short description
Many hosting and CDN platforms also offer easy redirection management from their admin panels. 301 Redirects in.htaccess. A common way of implementing redirects is through an.htaccess file, which runs on Apache servers. Below we've listed some common.htaccess directives for redirection. To redirect an entire domain to a new site. But with HTTP also you can access your website and which is not showing secure in the browser. To force tomcat to redirect and revert all requested HTTP traffic to HTTPS, You need to edit the 2. You must configure your rewrite rules to use the X-Forwarded-Proto header and redirect only HTTP clients. Otherwise, the rewrite rules can create an infinite loop of redirection requests between your Classic Load Balancer and the instances behind it. Such a loop results in the error 'ERRTOOMANYREDIRECTS'. I originally performed all of my rewrites in Apache which acts as my backend. While Apache handled the typical non-www to www redirects with ease, it created a redirect loop when attempting to redirect users from HTTP to HTTPS. I decided to let Varnish Cache 4 rather than the Apache backend handle the redirect.
Classic Load Balancers can't redirect HTTP traffic to HTTPS. Instead, you can include rewrite rules on the web servers of Amazon Elastic Compute Cloud (Amazon EC2) instances behind your Classic Load Balancer.
You must configure your rewrite rules to use the X-Forwarded-Proto header and redirect only HTTP clients. Otherwise, the rewrite rules can create an infinite loop of redirection requests between your Classic Load Balancer and the instances behind it. Such a loop results in the error 'ERR_TOO_MANY_REDIRECTS'.
Note: Application Load Balancers can redirect HTTP traffic to HTTPS using redirect actions. Migrate your Classic Load Balancer to an Application Load Balancer to use this feature.
Resolution
Review the following example configurations for Apache, NGINX, and IIS web servers. Configure the web servers behind your Classic Load Balancer to use the X-Forwarded-Proto header to direct traffic based on whether clients use HTTP or HTTPS. Be sure to add rewrite rules to your web servers that:
- Redirect clients using HTTP to an HTTPS URL
- Serve clients using HTTPS directly
Important: The following configurations are provided as examples only. Modify them based on your configuration and use case.
Apache servers: Virtual host file method (best practice)
1. Open your Apache configuration file. Possible locations include /etc/httpd/conf/httpd.conf (Apache 2/httpd), /etc/apache2/sites-enabled/ (Apache 2.4), or /etc/apache2/apache2.conf (Apache on Ubuntu).
2. Add a rewrite rule to the VirtualHost section of your configuration file similar to the following:
3. Save your Apache configuration file.
4. Restart Apache.
Apache servers: .htaccess file method (not a best practice)
Warning: It's a best practice to use the Apache virtual host file method described in the previous section. According to the Apache .htaccess files guidelines, use .htaccess files only if you don't have access to the main Apache configuration file.
1. Open your Apache configuration file. Possible locations include /etc/httpd/conf/httpd.conf (Apache 2/httpd) or /etc/apache2/sites-enabled/ (Apache 2.4).
2. Edit the Directory directive to enable .htaccess as follows:
3. Save your Apache configuration file.
4. Open your .htaccess file.
5. Add a rewrite rule similar to the following:
6. Save your .htaccess file.
7. Restart Apache.
NGINX servers
Note: This resolution applies to NGINX 1.10.3 (Ubuntu) and NGINX 1.12.1 (Amazon Linux).
1. Open your NGINX configuration file (nginx.conf).
2. Add the following rewrite rule. Be sure to modify the rewrite rule for your configuration.
3. Restart NGINX.
IIS servers
Note: This resolution applies to Microsoft Windows Server 2012 R2 and 2016 Base.
1. Install the IIS URL rewrite module from Microsoft.
2. Open your web.config file.
3. Add the following rewrite rule to the <system.Webserver> section. Be sure to modify the rewrite rule for your specific configuration.
4. Save your web.config file.
5. Open the IIS Manager.
6. Refresh the default website.
7. Verify that your new rewrite rule appears in the URL Rewrite section.
8. Restart your website.
9. Verify that your redirection works.