为Nginx Ingress配置重定向规则
配置永久重定向规则
如果您想将访问请求永久重定向至某个目标网址(状态码为301),您可以通过nginx.ingress.kubernetes.io/permanent-redirect注解进行配置。例如将所有内容永久重定向到www.example.com:
nginx.ingress.kubernetes.io/permanent-redirect: https://www.example.com
在Nginx Ingress中的配置如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
nginx.ingress.kubernetes.io/permanent-redirect: https://www.example.com
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
service:
name: <your_service_name> #替换为您的目标服务名称
port:
number: <your_service_port> #替换为您的目标服务端口
property:
ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
pathType: ImplementationSpecific
ingressClassName: nginx
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/permanent-redirect: https://www.example.com
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
serviceName: <your_service_name> #替换为您的目标服务名称
servicePort: <your_service_port> #替换为您的目标服务端口
配置永久重定向的返回状态码
配置永久重定向时,您可以通过nginx.ingress.kubernetes.io/permanent-redirect-code注解修改永久重定向的返回状态码。例如将永久重定向的状态码设置为308:
nginx.ingress.kubernetes.io/permanent-redirect-code: '308'
在Nginx Ingress中的配置如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
nginx.ingress.kubernetes.io/permanent-redirect: https://www.example.com
nginx.ingress.kubernetes.io/permanent-redirect-code: '308'
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
service:
name: <your_service_name> #替换为您的目标服务名称
port:
number: <your_service_port> #替换为您的目标服务端口
property:
ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
pathType: ImplementationSpecific
ingressClassName: nginx
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/permanent-redirect: https://www.example.com
nginx.ingress.kubernetes.io/permanent-redirect-code: '308'
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
serviceName: <your_service_name> #替换为您的目标服务名称
servicePort: <your_service_port> #替换为您的目标服务端口
配置临时重定向规则
如果您想将访问请求临时重定向至某个目标网址(状态码为302),您可以通过nginx.ingress.kubernetes.io/temporal-redirect注解进行配置。例如将所有内容临时重定向到www.example.com:
nginx.ingress.kubernetes.io/temporal-redirect: https://www.example.com
在Nginx Ingress中的配置如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
nginx.ingress.kubernetes.io/temporal-redirect: https://www.example.com
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
service:
name: <your_service_name> #替换为您的目标服务名称
port:
number: <your_service_port> #替换为您的目标服务端口
property:
ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
pathType: ImplementationSpecific
ingressClassName: nginx
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/temporal-redirect: https://www.example.com
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
serviceName: <your_service_name> #替换为您的目标服务名称
servicePort: <your_service_port> #替换为您的目标服务端口
配置HTTP重定向到HTTPS
默认情况下,若Ingress使用了TLS,通过HTTP访问时,请求将会被重定向(状态码为308)到HTTPS。您可以通过nginx.ingress.kubernetes.io/ssl-redirect注解进行配置,对应的参数值可设置为“true”或“false”:
- true:使用TLS证书时,将HTTP访问重定向至HTTPS(状态码为308)。
- false:使用TLS证书时,禁止将HTTP访问重定向至HTTPS。
如果您在没有使用TLS证书的情况下需要强制重定向到HTTPS,您可以使用nginx.ingress.kubernetes.io/force-ssl-redirect: "true"注释实现。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
service:
name: <your_service_name> #替换为您的目标服务名称
port:
number: <your_service_port> #替换为您的目标服务端口
property:
ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
pathType: ImplementationSpecific
ingressClassName: nginx
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-test
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: 'true'
spec:
rules:
- host: ''
http:
paths:
- path: /
backend:
serviceName: <your_service_name> #替换为您的目标服务名称
servicePort: <your_service_port> #替换为您的目标服务端口