我想使用应用程序负载均衡器将流量从一个域名重定向到另一个域名。
简短描述
要使用应用程序负载均衡器将一个域重定向到另一个域,请在 Amazon Elastic Compute Cloud (Amazon EC2) 控制台中创建侦听器规则。应用程序负载均衡器支持域到域和 HTTP 到 HTTPS 重定向。
最佳做法是使用应用程序负载均衡器而不是 Amazon Simple Storage Service (Amazon S3) 来进行此配置。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要在 Amazon EC2 控制台中创建侦听器规则,请完成以下步骤:
- 打开 Amazon EC2 控制台。
- 在导航窗格中的 Load Balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。
- 选择您的负载均衡器,然后选择侦听器。
- 为要使用的负载均衡器侦听器选择查看/编辑规则。
- 选择添加规则图标(加号)。
- 选择插入规则。
- 选择添加条件。
- 在条件部分(IF)中,选择添加条件。然后完成以下步骤:
选择主机标头,然后输入您的主机名(例如,example.com)。
如要保存,请选择复选标记图标。
- 在操作部分(THEN)中,选择添加操作。然后完成以下步骤:
选择 Redirect to(重定向到)。
指定协议和端口。
将 Original host, path, query(使用默认主机、路径、查询...)更改为 Custom host, path, query(使用自定义主机、路径、查询...)。
对于 Host(主机),输入 example2.com。
对于 Path(路径)和 Query(查询),保留默认值(除非用例要求更改这两个值)。
将 Response(响应)设置为 HTTP 301 "Permanently moved"(HTTP 301“永久移动”)或 HTTP 302 "Found"(HTTP 302“已找到”)。
如要保存,请选择复选标记图标。
现在,THEN 部分显示如下:
重定向到 https://example2.com:443/#{path}?#{query}
状态码: HTTP_301
- 选择保存。
**注意:**如果两个域都指向同一个应用程序负载均衡器,则完成以下任务之一:
- 为两个域提供单独的证书。
- 使用主题备用名称(SAN)证书来验证域。
要确认重定向是否有效,请完成以下步骤:
-
在 AWS CLI 中,使用以下 curl 函数:
curl
-Iv https://example.com -L
* Rebuilt URL to: https://example.com/
. . .
* Connected to example.com (1.2.3.4) port 443 (#0)
<SSL handshake>
> Host: example.com. ------> Host name is example.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
-
在互联网浏览器中,输入 example.com 并确认会重定向到 example2.com。
**注意:**应用程序负载均衡器仅支持 301 和 302 重定向。这两种重定向允许客户端在后续请求中将 HTTP 方法从 POST 更改为 GET。如果需要 307 重定向,则重定向必须通过目标应用程序进行。
相关信息
如何使用 Amazon S3 和 Amazon Route 53 将顶点域重定向到其子域或任何其他域?
Application Load Balancers now support multiple TLS certificates with smart selection using SNI