摘要:如果只采用默认页的话,那么404的错误,是捕获不到的。因为我们用后端真实的pod去响应请求了。对于nginx ingress来说,都认为是正常的访问,所以404页面需要单独去定义。
kubernetes ingress 可以在ingress中设置错误页面。
如果只采用默认页的话,那么404的错误,是捕获不到的。因为我们用后端真实的pod去响应请求了。对于nginx ingress来说,都认为是正常的访问,所以404页面需要单独去定义。
ingress annotations的nginx.ingress.kubernetes.io/server-snippet配置,是专门用于一些复杂的nginx配置。移动端和电脑端可以访问同一个域名转发到不同的服务。
需要编辑cm配置:
kubectl edit cm ingress-nginx-controller -n ingress-nginx
在data里面加入:
allow-snippet-annotations: "true"
touch ingress.yaml
vim ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: snippet.87long.com
namespace: ingress-nginx
annotations:
nginx.ingress.kubernetes.io/server-snippet: |
set $agentflag 0;
if ($http_user_agent ~* "(Android|iPhone)") {
}
spec:
ingressClassName: nginx
rules:
- host: snippet.87long.com
paths:
- pathType: Prefix
path: "/"
backend:
service: nginx-service
port:
number: 80
kubectl create -f ingress.yaml
-H是指定头部信息,-I是只返回头部信息。
如果非Android或者iPhone的话,就会以默认的头部返回。
如果是Android或者IPhone的话,就会跳转到另外一个页面或者另外一个服务。
湖面
鼓励的话语:别让此刻的阴霾,遮住了你心中的阳光,和远方的风景!
来源:五行养生学