ADC

如何使用响应程序将 HTTP 请求重定向到 HTTPS

本文介绍如何使用负载平衡虚拟服务器 IP 地址来配置响应程序功能,并将客户端请求从 HTTP 重定向到 HTTPS。

假设用户可能尝试通过发送 HTTP 请求访问安全 Web 站点。与其删除请求,不如将请求重定向到安全的 Web 站点。您可以使用响应程序功能将请求重定向到安全的 Web 站点,而无需更改用户尝试访问的路径和 URL 查询。

NetScaler 响应程序如何将请求从 HTTP 重定向到 HTTPS

下图显示了设备如何重定向请求的分步流程。

响应者重定向请求

要配置 NetScaler 设备的响应程序功能以及负载平衡 VIP 地址,以将客户端请求从 HTTP 重定向到 HTTPS,请完成以下步骤。

在设备上启用响应程序功能

要在设备上启用响应程序功能,请导航到系统 > 设置 > 配置高级功能,然后选择响应程序

创建响应程序操作

要创建响应程序操作,请执行以下步骤:

  1. 导航到 AppExpert > 响应程序 > 操作,然后单击添加
  2. 在“名称”字段中指定适当的名称,例如 http_to_https_actn。
  3. 选择重定向作为类型
  4. 在“表达式”字段中,键入以下表达式:

    "https://" + HTTP.REQ.HOSTNAME.HTTP_URL_SAFE + HTTP.REQ.URL.PATH_AND_QUERY.HTTP_URL_SAFE.

  5. 单击 Create(创建)。

创建响应者策略

要创建响应程序策略,请执行以下步骤:

  1. 导航到 AppExpert > 响应程序 > 策略 ,然后单击“添加”。
  2. 在“名称”字段中指定适当的名称,例如 http_to_https_pol。
  3. 从“操作”列表中,选择您创建的操作名称。
  4. 从“未定义的操作”列表中,选择“重置”。
  5. 在“表达式”字段中键入 HTTP.REQ.IS_VALID 表达式,如以下屏幕截图所示。

创建响应者策略

创建显示器

要创建状态始终标记为启动的显示器,请执行以下步骤:

  1. 导航到流量管理 > 负载平衡 > 显示器,单击添加
  2. 在“名称”字段中指定适当的名称,例如 localhost_ping。
  3. 在“目标 IP”字段中,指定 127.0.0.1 作为 IP 地址。

配置监视器

创建服务

要创建服务,请执行以下步骤:

  1. 导航到负载平衡 > 服务 ,然后单击添加
  2. 在“名称”字段中指定适当的名称,例如 Always_UP_service。
  3. 在“服务器”字段中指定一个不存在的 IP 地址。

  4. 在“端口”字段中指定 80。
  5. 从“可用监视器”列表中添加创建的监视器

创建负载平衡虚拟服务器

  1. 导航到“负载平衡”>“服务”,然后单击“添加”。
  2. 在“名称”字段中指定适当的名称。
  3. IP 地址字段中指定网站的 IP 地址。
  4. 从“协议”列表中选择 HTTP。
  5. 在“端口”字段中输入 80。
  6. 单击策略选项卡。
  7. 将您创建的响应程序策略绑定到网站的 HTTP 负载平衡 VIP 地址。
  8. 创建安全的负载平衡虚拟服务器,其网站的 IP 地址和端口为 443。

要从设备的命令行界面创建与前面过程类似的配置,请运行以下命令:

enable ns feature responder
add responder action http_to_https_actn redirect ""https://" + http.req.hostname.HTTP_URL_SAFE + http.REQ.URL.PATH_AND_QUERY.HTTP_URL_SAFE"
add responder policy http_to_https_pol HTTP.REQ.IS_VALID http_to_https_actn RESET
add lb monitor localhost_ping PING -LRTM ENABLED -destIP 127.0.0.1
add service Always_UP_service 1.2.3.4 HTTP 80 -gslb NONE -maxClient 0 -maxReq 0 -cip ENABLED dummy -usip NO -sp OFF -cltTimeout 180 -svrTimeout 360 -CKA NO -TCPB NO -CMP YES
bind lb monitor localhost_ping Always_UP_service
add lb vserver http_site.com HTTP 10.217.96.238 80 -persistenceType COOKIEINSERT -timeout 0 -cltTimeout 180
bind lb vserver http_site.com Always_UP_service
bind lb vserver http_site.com -policyName http_to_https_pol -priority 1 -gotoPriorityExpression END
<!--NeedCopy-->

备注:

  • 端口 80 负载平衡重定向虚拟服务器的状态必须为 UP 才能使重定向生效。
  • 如果 HTTPS 虚拟服务器未处于活动状态,Web 浏览器可能无法正确重定向。
  • 这种重定向设置允许将多个域绑定到同一 IP 地址的情况。
  • 如果客户端向重定向虚拟服务器发送无效的 HTTP 请求,则设备会发送 RESET 消息代码。
如何使用响应程序将 HTTP 请求重定向到 HTTPS