You need to enable JavaScript to run this app.
容器服务

容器服务

复制全文
Nginx Ingress
Nginx Ingress 配置重定向规则
复制全文
Nginx Ingress 配置重定向规则

Nginx Ingress 支持重定向功能,包括永久重定向和临时重定向,也支持将 HTTP 重定向为 HTTPS。本文为您介绍如何配置 Nginx Ingress 重定向功能。

前提条件

配置永久重定向

Nginx Ingress 支持通过 Annotation 配置永久重定向,示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress # 路由规则的名称
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: "https://www.volcengine.com" # 重定向到指定的目标网站
spec:
  ingressClassName: nginx # 指定 Ingress Controller
  rules:
  - host: example.com # 转发规则域名
    http:
      paths:
      - backend:
          service:
            name: service-demo # 请求被转发到的目标服务名称
            port:
              number: 80 # 请求被转发到的目标服务开放端口号
        path: / # 访问路径
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值
nginx.ingress.kubernetes.io/permanent-redirectString重定向的目标网站地址。

说明

默认情况下,永久重定向的返回状态码为301

配置永久重定向返回状态码

Nginx Ingress 支持通过 Annotation 配置永久重定向并指定返回状态码,示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress # 路由规则的名称
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: "https://www.volcengine.com" # 重定向到指定的目标网站
    nginx.ingress.kubernetes.io/permanent-redirect-code: "308" # 重定向返回状态码
spec:
  ingressClassName: nginx # 指定 Ingress Controller
  rules:
  - host: example.com # 转发规则域名
    http:
      paths:
      - backend:
          service:
            name: service-demo # 请求被转发到的目标服务名称
            port:
              number: 80 # 请求被转发到的目标服务开放端口号
        path: / # 访问路径
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值
nginx.ingress.kubernetes.io/permanent-redirectString重定向到指定的网站。
nginx.ingress.kubernetes.io/permanent-redirect-codeString指定重定向返回状态码。取值:301308

配置临时重定向

Nginx Ingress 支持通过 Annotation 配置临时重定向,示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress # 路由规则的名称
  annotations:
    nginx.ingress.kubernetes.io/temporal-redirect: "https://www.volcengine.com" # 重定向到指定的目标网站
spec:
  ingressClassName: nginx # 指定 Ingress Controller
  rules:
  - host: example.com # 转发规则域名
    http:
      paths:
      - backend:
          service:
            name: service-demo # 请求被转发到的目标服务名称
            port:
              number: 80 # 请求被转发到的目标服务开放端口号
        path: / # 访问路径
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值
nginx.ingress.kubernetes.io/temporal-redirectString重定向到指定的网站。

配置 HTTP 重定向到 HTTPS

Nginx Ingress 支持通过 Annotation 配置 HTTP 重定向到 HTTPS,示例和说明如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress # 路由规则的名称
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "true" # 开启 HTTP 重定向到 HTTPS
spec:
  ingressClassName: nginx # 指定 Ingress Controller
  rules:
  - host: example.com # 转发规则域名
    http:
      paths:
      - backend:
          service:
            name: service-demo # 请求被转发到的目标服务名称
            port:
              number: 80 # 请求被转发到的目标服务开放端口号
        path: / # 访问路径
        pathType: Prefix # 路径类型:Exact(精确匹配)/Prefix(前缀匹配)

Annotation 说明如下表所示。

Key类型是否必须描述默认值

nginx.ingress.kubernetes.io/ssl-redirect

Boolean

是否将 HTTP 请求重定向至 HTTPS。取值:

  • true:开启将 HTTP 请求重定向至 HTTPS。
  • false:关闭将 HTTP 请求重定向至 HTTPS。

结果验证

以永久重定向为例,使用以下命令访问服务。其中180.xxx.xxx.xxx为 Nginx Ingress 对应 CLB 的公网或私网 IP 地址。

curl -H "Host: example.com" http://180.xxx.xxx.xxx -I -k

预期输出如下,可以看到重定向信息。

HTTP/1.1 301 Moved Permanently
Date: Thu, 07 Dec 2023 06:56:48 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://www.volcengine.com
最近更新时间:2024.06.05 20:37:49
这个页面对您有帮助吗?
有用
有用
无用
无用