Kubernetes 入口编辑:HTTP 400 错误请求 - 普通 HTTP 请求已发送到 HTTPS
Kubernetes ingress edit: HTTP 400 Bad request - The plain HTTP request was sent to HTTPS
在 Web 应用程序的入口被手动编辑或通过自动作业编辑后,完美加载的 Web 应用程序是否会给出一个 *HTTP 400 Bad request - The plain HTTP request was sent to HTTPS*
端口,该自动作业更新入口修改白名单 IP
显然,当我们在清除网络应用程序部署后重新部署网络应用程序时,这个问题得到解决...
任何指向这个的指针都会很好,因为这发生在我们的 PROD 环境中,并且在任何较低的环境中都无法重现。
注意事项:-
- Nginx Ingress 控制器设置在较低环境和 Prod 环境中是相同的。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/ingress.allow-http: "false"
ingress.kubernetes.io/proxy-body-size: 20M
ingress.kubernetes.io/secure-backends: "true"
ingress.kubernetes.io/whitelist-source-range: xxx.yy.zz.pp/32, yyy.ss.dd.kkl/32
ingress.kubernetes.io/whitelist-source-range-status: unlocked
creationTimestamp: 2018-11-29T15:34:05Z
generation: 5
labels:
app: xyz-abc-pqr
name: xxxx-webapp-yyyy-zzzz
namespace: nspsace-name
resourceVersion: "158237270"
selfLink: /apis/extensions/v1beta1/namespaces/nspsace-name/ingresses/xxxx-webapp-yyyy-zzzz
uid: 348f892e-f3ec-11e8-aa6f-0a0340041348
spec:
rules:
- host: ssssssss.wwwwweewwerwerw.co.uk
http:
paths:
- backend:
serviceName: xxxx-webapp-yyyy-zzzz
servicePort: 443
path: /
- host: xxxx-webapp-yyyy-zzzz.bbbbv.lasdfkla.ajksdfh.ioohhsaf.pp
http:
paths:
- backend:
serviceName: xxxx-webapp-yyyy-zzzz
servicePort: 443
path: /
tls:
- hosts:
- ssssssss.wwwwweewwerwerw.co.uk
- xxxx-webapp-yyyy-zzzz.bbbbv.lasdfkla.ajksdfh.ioohhsaf.pp
secretName: xxxx-webapp-yyyy-zzzz-server-tls
status:
loadBalancer:
ingress:
- {}
入口控制器及其更新配置的方式可能有问题。我假设您使用的是 nginx ingress controller,因此您可以在之后检查配置:
$ kubectl cp <nginx-ingress-controller-pod>:nginx.conf nginx.conf.before
$ kubectl edit ingress <your-ingress>
$ kubectl cp <nginx-ingress-controller-pod>:nginx.conf nginx.conf.after
$ diff nginx.conf.before nginx.conf.after
您可以看到 nginx 可能会发生这种情况,原因如下:.
在 Web 应用程序的入口被手动编辑或通过自动作业编辑后,完美加载的 Web 应用程序是否会给出一个 *HTTP 400 Bad request - The plain HTTP request was sent to HTTPS*
端口,该自动作业更新入口修改白名单 IP
显然,当我们在清除网络应用程序部署后重新部署网络应用程序时,这个问题得到解决...
任何指向这个的指针都会很好,因为这发生在我们的 PROD 环境中,并且在任何较低的环境中都无法重现。 注意事项:- - Nginx Ingress 控制器设置在较低环境和 Prod 环境中是相同的。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true"
ingress.kubernetes.io/ingress.allow-http: "false"
ingress.kubernetes.io/proxy-body-size: 20M
ingress.kubernetes.io/secure-backends: "true"
ingress.kubernetes.io/whitelist-source-range: xxx.yy.zz.pp/32, yyy.ss.dd.kkl/32
ingress.kubernetes.io/whitelist-source-range-status: unlocked
creationTimestamp: 2018-11-29T15:34:05Z
generation: 5
labels:
app: xyz-abc-pqr
name: xxxx-webapp-yyyy-zzzz
namespace: nspsace-name
resourceVersion: "158237270"
selfLink: /apis/extensions/v1beta1/namespaces/nspsace-name/ingresses/xxxx-webapp-yyyy-zzzz
uid: 348f892e-f3ec-11e8-aa6f-0a0340041348
spec:
rules:
- host: ssssssss.wwwwweewwerwerw.co.uk
http:
paths:
- backend:
serviceName: xxxx-webapp-yyyy-zzzz
servicePort: 443
path: /
- host: xxxx-webapp-yyyy-zzzz.bbbbv.lasdfkla.ajksdfh.ioohhsaf.pp
http:
paths:
- backend:
serviceName: xxxx-webapp-yyyy-zzzz
servicePort: 443
path: /
tls:
- hosts:
- ssssssss.wwwwweewwerwerw.co.uk
- xxxx-webapp-yyyy-zzzz.bbbbv.lasdfkla.ajksdfh.ioohhsaf.pp
secretName: xxxx-webapp-yyyy-zzzz-server-tls
status:
loadBalancer:
ingress:
- {}
入口控制器及其更新配置的方式可能有问题。我假设您使用的是 nginx ingress controller,因此您可以在之后检查配置:
$ kubectl cp <nginx-ingress-controller-pod>:nginx.conf nginx.conf.before
$ kubectl edit ingress <your-ingress>
$ kubectl cp <nginx-ingress-controller-pod>:nginx.conf nginx.conf.after
$ diff nginx.conf.before nginx.conf.after
您可以看到 nginx 可能会发生这种情况,原因如下:.