HTTP 重定向

基本概念

HTTP 重定向是 ALB 提供的一项功能。它会直接返回一个 30x 的 HTTP 状态码给匹配规则的请求。Location 头部将用于指示客户端重定向到新的 URL。

ALB 支持在端口和规则级别配置重定向。

CRD

redirect:
  properties:
    code:
      type: integer
    host:
      type: string
    port:
      type: integer
    prefix_match:
      type: string
    replace_prefix:
      type: string
    scheme:
      type: string
    url:
      type: string
  type: object

重定向可以配置在:

  • 前端:.spec.config.redirect
  • 规则:.spec.config.redirect

Ingress 注解

注解描述
nginx.ingress.kubernetes.io/permanent-redirect对应 CR 中的 URL,默认将 code 设置为 301
nginx.ingress.kubernetes.io/permanent-redirect-code对应 CR 中的 code
nginx.ingress.kubernetes.io/temporal-redirect对应 CR 中的 URL,默认将 code 设置为 302
nginx.ingress.kubernetes.io/temporal-redirect-code对应 CR 中的 code
nginx.ingress.kubernetes.io/ssl-redirect对应 CR 中的 scheme,默认将 scheme 设置为 HTTPS
nginx.ingress.kubernetes.io/force-ssl-redirect对应 CR 中的 scheme,默认将 scheme 设置为 HTTPS

SSL-Redirect

  1. SSL-redirect 和 force-ssl-redirect 的区别在于,SSL-redirect 仅在 ingress 对应域名有证书时生效,而 force-ssl-redirect 无论是否有证书都会生效。
  2. 对于 HTTPS 端口,如果只配置了 SSL-redirect,则不会设置重定向。

端口级别重定向

当在端口级别配置重定向时,所有访问该端口的请求都会根据重定向配置进行重定向。

规则级别重定向

当在规则级别配置重定向时,匹配该规则的请求将根据重定向配置进行重定向。