How can I redirect HTTP requests to HTTPS using an Application Load Balancer?

3 minute read
1

I want to redirect HTTP requests to HTTPS using Application Load Balancer listener rules.

Resolution

Confirm your version of Load Balancer

  1. Open the Amazon Elastic Compute Cloud (Amazon EC2) console.
  2. Under Load Balancing in the sidebar, choose Load Balancers.
  3. Find the load balancer for which you're creating a listener rule. Note which version is listed under the Type column: application, classic, network, or gateway.

The following steps apply only to Application Load Balancer. If you're using Classic Load Balancer, then see How do I redirect HTTP traffic to HTTPS on my Classic Load Balancer?

Note: You must create a target group before following the steps below.

Create an HTTP listener rule that redirects HTTP requests to HTTPS

  1. Open the Amazon EC2 console.
  2. Under Load Balancing in the sidebar, choose Load Balancers.
  3. Select a load balancer, and then choose Listeners, Add listener. Note: Skip to step 6 if you already have an HTTP listener.
  4. For Protocol: port, choose HTTP. You can either keep the default port or specify a custom port.
  5. For Default actions, choose Add action, redirect to, and then enter port 443 (or a different port if you’re not using the default). For more details, see Rule action types. To save, choose the checkmark icon. Note: If you created a new HTTP listener following steps 3-5 in this set of tasks, skip to Create an HTTPS listener.
  6. Select a load balancer, and then choose HTTP Listener.
  7. Under Rules, choose View/edit rules.
  8. Choose Edit Rule to modify the existing default rule to redirect all HTTP requests to HTTPS. Or, insert a rule between the existing rules (if appropriate for your use case).
  9. Under Then, delete the existing condition. Then, add the new condition with the Redirect to action.
  10. For HTTPS, enter 443 port.
  11. Keep the default for the remaining options.
    Note: If you want to change the URL or return code, you can modify these options as needed.
  12. To save, choose the checkmark icon.

Create an HTTPS listener

Note: If you already have an HTTPS listener with a rule to forward requests to the respective target group, skip to Verify that the security group of the Application Load Balancer allows traffic on 443.

  1. Choose Listeners, Add listener.
  2. For Protocol: port, choose HTTPS. Keep the default port or specify a custom port.
  3. For Default actions, choose Add action, Forward to.
  4. Select a target group that hosts application instances.
  5. Select a predefined security policy that's best suited for your configuration.
  6. Choose Default Security Certificate. (If you don’t have one, you can create a security certificate.)
  7. Choose Save.

Verify that the security group of the Application Load Balancer allows traffic on 443

  1. Choose the load balancer's Description.
  2. Under Security, choose Security group ID.
  3. Verify the inbound rules. The security group must have an inbound rule that permits traffic on HTTP and HTTPS. If there are no inbound rules, complete the following steps to add them.

To add inbound rules (if you don't already have them):

  1. Choose Actions, Edit Inbound Rules to modify the security group.
  2. Choose Add rule.
  3. For Type, choose HTTPS.
  4. For Source, choose Custom (0.0.0.0/0 or Source CIDR).
  5. Choose Save.
AWS OFFICIAL
AWS OFFICIALUpdated 2 years ago
4 Comments

Application Load balancer doesn't allow to change "default action" from "forwarding to. Neither does Network load balancer.

replied 4 months ago

Thank you for your comment. We'll review and update the Knowledge Center article as needed.

profile pictureAWS
MODERATOR
replied 4 months ago

This article is still outdated. It would be helpful it reflected the actual options for default action listener rules as Sirorezka previously mentioned.

andy
replied 24 days ago

Thank you for your comment. We'll review and update the Knowledge Center article as needed.

profile pictureAWS
MODERATOR
replied 23 days ago