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-redirect | String | 是 | 重定向的目标网站地址。 | 无 |
说明
默认情况下,永久重定向的返回状态码为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-redirect | String | 是 | 重定向到指定的网站。 | 无 |
nginx.ingress.kubernetes.io/permanent-redirect-code | String | 是 | 指定重定向返回状态码。取值:301 或308 。 | 无 |
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-redirect | String | 是 | 重定向到指定的网站。 | 无 |
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。取值:
| 无 |
以永久重定向为例,使用以下命令访问服务。其中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