ADC

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

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

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

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

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

响应者重定向请求

注意:导航路径和屏幕截图源自 NetScaler 11.0。

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

  1. 在设备上启用响应程序功能。导航到“系统”>“设置”>“配置高级功能”>“响应程序”。

    启用响应程序

  2. 创建响应程序操作并在“名称”字段中指定相应的名称,例如 http_to_https_actn。
  3. 要创建响应程序操作,请在导航窗格中展开 AppExpert > 响应程序,单击“操作”,然后单击“添加”。
  4. 选择“重定向为类型”。
  5. 在“表达式”字段中,键入以下表达式:

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

  6. 在 NetScaler 版本 9.0 和 10.0 中,请确保清除“绕过安全检查”选项。

    注意:从 NetScaler 11.0 起,此选项不存在。

  7. 创建 响应程序策略 并在名称字段中指定相应的名称,例如 http_to_https_pol。
  8. 要创建响应程序策略,请在导航窗格中展开 AppExpert > 响应程序,单击“策略”,然后单击“添加”。
  9. 从操作列表中,选择您创建的操作名称。
  10. 从“未定义的操作”列表中,选择“重置”。
  11. 表达式字段中键入 HTTP.REQ.IS_VALID 表达式,如以下屏幕截图所示。

创建响应者策略

  1. 创建一个状态始终标记为 UP 的监视器,然后在“名称”字段中指定相应的名称,例如 localhost_ping。
  2. 要创建监视器,请在导航窗格中展开“负载平衡”,单击“监视器”,然后单击“添加”。
  3. 目标 IP 字段中,指定 127.0.0.1 IP 地址,如以下屏幕截图所示。

    配置监视器

  4. 创建服务并在名称字段中指定相应的名称,例如 Always_UP_service。
  5. 要创建服务,请在导航窗格中展开“负载平衡”,单击“服务”,然后单击“添加”。
  6. 在“服务器”字段中指定一个不存在的 IP 地址。

    配置监视器

  7. 在“端口”字段中指定 80。
  8. 从“可用监视器”列表中添加创建的监视器
  9. 创建负载平衡虚拟服务器并在“名称”字段中指定相应的 名称
  10. 要创建负载平衡虚拟服务器,请在导航窗格中展开“负载平衡”,单击“服务”,然后单击“添加”。
  11. 在 IP 地址字段中指定网站的 IP 地址。
  12. 从协议列表中选择 HTTP。
  13. 在“端口”字段中输入 80。
  14. 在 NetScaler 版本 9.0 和 10.0 上,在“服务”选项卡中为您创建的服务选择“活动”选项,如以下屏幕截图所示。在 NetScaler 版本 11.0 中,不推荐使用此选项。

    选择“操作”选项

  15. 单击策略选项卡。
  16. 将您创建的响应程序策略绑定到网站的 HTTP 负载平衡 VIP 地址。
  17. 创建一个安全的负载平衡虚拟服务器,其网站的 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