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