如何使用 Application Load Balancer 将一个域重定向到另一个域? 

上次更新日期:2021 年 2 月 5 日

如何使用 Application Load Balancer 将一个域重定向到另一个域?

简短描述

Application Load Balancer 服务支持域名的重定向以及从 HTTP 重定向到 HTTPS。如果您的域指向 Application Load Balancer,则最佳实践是使用 Application Load Balancer 而不是 Amazon Simple Storage Service (Amazon S3) 配置重定向。

解决方法

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI

如果您使用 Application Load Balancer 作为配置的一部分,则可以使用它将一个域重定向到另一个域:

  1. 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台
  2. 在导航窗格中,选择负载均衡下的负载均衡器
  3. 选择您的负载均衡器,然后选择侦听器
  4. 为要使用的负载均衡器侦听器选择查看/编辑规则
  5. 选择添加规则图标 (加号)。
  6. 选择插入规则
  7. 选择添加条件
  8. 在条件部分 (IF) 中,选择添加条件
    选择主机标头,然后输入主机名 (例如,example.com)。
    如要保存,请选择复选标记图标。
  9. 在操作部分 (THEN) 中,选择添加操作
    选择重定向到
    根据使用案例的要求,指定协议和端口。
    原始主机、路径、查询更改为自定义主机、路径、查询
    对于主机,请输入 example2.com
    对于路径查询,请保留默认值 (除非您的使用案例要求您更改它们)。
    响应设置为 HTTP 301“永久移动”HTTP 302“已找到”
    如要保存,请选择复选标记图标。
    现在会出现 THEN 部分:
    重定向到 https://example2.com:443/#{path}?#{query}
    状态代码:HTTP_301
  10. 选择保存

注意:如果两个域指向同一个 Application Load Balancer,请确保:

  • 两个域都有单独的证书,或
  • 使用主题替代名称 (SAN) 证书验证域

要确认重定向发挥作用,请执行以下操作:

1.    在 AWS CLI 中,使用 curl 函数。

curl
    -Iv https://example1.com -L
* Rebuilt URL to: https://example1.com/
. . . 
* Connected to example1.com (1.2.3.4) port 443 (#0)
<SSL handshake> 
> Host: example1.com.   ———> Host name is example1.com 
> User-Agent: curl/7.61.1
>
    Accept: */*
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 301       ———> ALB does redirection 
< server: awselb/2.0
< date: Fri, 06 Mar 2020 09:18:33 GMT
< content-type: text/html
< content-length: 150
    
< location: https://example2.com:443/.   ——> redirected to “example2.com” 
< 
* Issue another request to this URL: 'https://example2.com:443/‘. ———> Curl initiates another request that is to example2.com 
*   Trying 34.195.219.169...
    
* TCP_NODELAY set
<SSL handshake> 
> Host: example2.com.   ———> Host name has changed to example2.com 
> User-Agent: curl/7.61.1
> Accept: */*
> 
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
<
    HTTP/2 200 ——> We got a response

2.    在互联网浏览器中,输入 example1.com 并确认它已重定向到 example2.com