如何使用应用程序负载均衡器将一个域重定向到另一个域? 

上次更新日期:2022 年 6 月 23 日

如何使用应用程序负载均衡器将一个域重定向到另一个域?

简短描述

应用程序负载均衡器服务支持域名的重定向以及从 HTTP 重定向到 HTTPS。如果您的域指向应用程序负载均衡器,则最佳实践是使用 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. 在导航窗格中,选择 Load Balancing(负载均衡)下的 Load Balancers(负载均衡器)。
  3. 选择您的负载均衡器,然后选择 Listeners(侦听器)。
  4. 为要使用的负载均衡器侦听器选择 View/edit rules(查看/编辑规则)。
  5. 选择添加规则图标(+ 号)。
  6. 选择插入规则
  7. 选择添加条件
  8. 在条件部分 (IF) 中,选择添加条件
    选择主机标头,然后输入主机名 (例如,example.com)。
    如要保存,请选择复选标记图标。
  9. 在操作部分 (THEN) 中,选择添加操作
    选择重定向到
    根据使用案例的要求,指定协议和端口。
    Original host、path、query(原始主机、路径、查询)更改为 Custom host、path、query(自定义主机、路径、查询)。
    对于主机,请输入 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

注意:应用程序负载均衡器仅支持 301 和 302 重定向。这些重定向允许客户端在后续请求中将 HTTP 方法从 POST 更改为 GET。如果需要 307 重定向,那么重定向必须通过目标应用程序。