我有以下通过 nodePort 32100 公开的入口配置。当我调用 (curl) 包含括号的 URL [1] 时,出现 HTTP 500 错误。但当我调用不包含括号的 URL [2] 时,请求通过 NGINX 入口控制器 (v0.35.0) 成功传递。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 0m
name: test1-app-ingress
namespace: test1
spec:
rules:
- host: ing1.example.com
http:
paths:
- backend:
serviceName: test1-app-1-ingress
servicePort: 80
path: /test1
- host: ing2.example.com
http:
paths:
- backend:
serviceName: test1-app-2-ingress
servicePort: 80
path: /test1
[1]
curl "http://ing1.example.com:32100/test1/test1.json/Streams(Type_4000000)" -X POST --data-binary @25kfile
* About to connect() to ing1.example.com port 32100 (#0)
* Trying 10.10.10.30...
* Connected to ing1.example.com (10.10.10.30) port 32100 (#0)
> POST /test1/test1.json/Streams(Type_4000000) HTTP/1.1
> User-Agent: curl/7.29.0
> Host: ing1.example.com:32100
> Accept: */*
> Content-Length: 25000
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 500 Internal Server Error
< Server: nginx
< Date: Tue, 01 Mar 2022 20:08:07 GMT
应用程序日志:
10.113.4.0 - - [01/Mar/2022:20:08:07 +0000] "POST /test1/test1.json/Streams(Type_4000000) HTTP/1.0" 500 528 "-" "curl/7.29.0" 25283 0.004 [test1-test1-app-1-ingress-80] [] 10.113.4.157:80 528 0.003 500 4b3fd4d41fb8a2d26691bd2da78f24b
[2]
curl "http://ing1.example.com:32100/test1/test1.json/StreamsType_4000000" -X POST --data-binary @25kfile
* About to connect() to ing1.example.com port 32100 (#0)
* Trying 10.10.10.30...
* Connected to ing1.example.com (10.10.10.30) port 32100 (#0)
> POST /test1/test1.json/StreamsType_4000000HTTP/1.1
> User-Agent: curl/7.29.0
> Host: ing1.example.com:32100
> Accept: */*
> Content-Length: 25000
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 200 OK
< Server: nginx
< Date: Tue, 01 Mar 2022 20:09:59 GMT
应用程序日志:
172.28.120.65 - - [01/Mar/2022:20:09:59 +0000] "POST /test1/test1.json/StreamsType_4000000 HTTP/1.0" 200 0 "-" "curl/7.29.0" 25281 0.003 [test1-test1-app-1-ingress-80] [] 10.113.4.157:80 0 0.003 200 133bbb4f7149d31e75cf78158566efee
这是 NGINX IC 的问题吗?我是否应该转义入口配置上的任何字符,例如括号?
答案1
应用程序的日志文件表明请求已到达应用程序。这意味着“500”错误代码是由应用程序发送的。因此,您无法在 nginx 端执行任何操作来修复这种情况。
您需要确保应用程序正确处理请求。