Haproxy завершает https-соединения и перенаправляет запросы на бэкэнд. Когда ресурс возвращает 204 No-Content and Transfer-Encoding: chunked, соединение curl не закрывается. Когда я вызываю ресурс непосредственно в бэкэнде, соединение закрывается правильно. Кто-нибудь может объяснить такое поведение? Это что-то специфическое для haproxy или curl, или это ожидается?
Через haproxy:
curl -X GET https://localhost/example -v
* About to connect() to localhost port 443 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 443 (#0)
> GET /example HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost
> Accept: */*
>
< HTTP/1.1 204 No Content
< Cache-Control: no-cache, no-store, must-revalidate
< Date: Wed, 23 Aug 2017 13:15:16 GMT
< transfer-encoding: chunked
<
^C
Непосредственно бэкэнд:
curl -X GET http://localhost:6083/example -v
* About to connect() to localhost port 6083 (#0)
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 6083 (#0)
> GET /example HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost:6083
> Accept: */*
>
< HTTP/1.1 204 No Content
< Cache-Control: no-cache, no-store, must-revalidate
< Date: Wed, 23 Aug 2017 14:19:03 GMT
< transfer-encoding: chunked
<
* Connection #0 to host localhost left intact