![](/img/trans.png)
[英]Kubernetes Nginx Ingress returning 502 Bad Gateway using hosts file
[英]Nginx returning status 400 when using kubernetes ingress
我正在使用后端服務器和套接字服務器設置容器部署。 當我嘗試連接到我的 Web 服務器端點時它很好,但是當連接到套接字服務器端點時它返回 400
我跟進了幾個主題,例如: WebSocket 握手:意外響應代碼:kubernetes-ingress 中的 400
但是添加注釋 WebSocket-services 和代理超時不起作用。
當我移植部署 pod 時,它工作正常。 所以問題一定是nginx入口控制器。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
namespace: {{ include "namespace" . }}
labels:
helm.sh/chart: {{ include "chartname" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/stage: {{ .Values.stage }}
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
spec:
tls:
- secretName: tls-certificate
hosts:
{{ range .Values.hosts }}
- {{ . | quote }}
{{ end }}
rules:
- host: mydomain.tk
http:
paths:
- path: /
backend:
serviceName: web
servicePort: http
- path: /socket
backend:
serviceName: web
servicePort: socket
這是我的 service.yml 文件:
apiVersion: v1
kind: Service
metadata:
name: web
namespace: {{ include "namespace" . }}
labels:
helm.sh/chart: {{ include "chartname" . }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/stage: {{ .Values.stage }}
spec:
type: NodePort
sessionAffinity: ClientIP
ports:
- port: {{ .Values.web.port }}
targetPort: http
protocol: TCP
name: http
- port: {{ .Values.web.socket }}
targetPort: socket
protocol: TCP
name: socket
selector:
name: web
無論我在做什么,它總是在 /socket 端點上返回 400。
我目前使用的是最新版本的 nginx 入口和 GKE 版本 1.11.7
入口的輸出:
Name: ingress
Namespace: backend
Address:
Default backend: default-http-backend:80 (10.48.0.9:8080)
TLS:
tls-certificate terminates mydomain.tk
Rules:
Host Path Backends
---- ---- --------
mydomain.tk
/ web:http (10.48.0.28:8080)
/socket web:socket (10.48.0.28:9092)
Annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-read-timeout: 3600
nginx.ingress.kubernetes.io/proxy-send-timeout: 3600
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 13s nginx-ingress-controller Ingress backend/ingress
我基本上通過向我的應用程序添加跨源標頭來解決問題。
在我的情況下,問題是由客戶端發送的標題行太長引起的。 我已經通過設置/增加 NGINX Ingress Controller ConfigMap的以下配置參數來解決它:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.