Welcome! Log In Create A New Profile

Advanced

Fake Content-Length header

October 06, 2011 05:41AM
Ситуация следующая:
- Клиент не знает размера запроса и ставит максимальное число в Content-Length.
- Nginx работает как прокси и начинает принимать запрос
- У клиента кончаются данные и он закрывает соединение.
- Nginx не получает весь размер из Content-Length и возвращает 40x ошибку.

Запрос клиента:
PUT http://192.168.1.1/192.168.1.2/path/file.wav HTTP/1.1
Host: 192.168.1.1
Content-Length: 864000000
Content-Type: audio/wav
Expect: 100-continue

Возможно ли настроить/пропатчить nginx так, чтобы он считал данные успешно принятыми, если их размер не равен Content-Length? Клиента изменить нельзя. Я пробовал изменить функцию ngx_http_do_read_client_request_body() и убрать возврат ошибки при c->recv()==0 (записав при этом в rb->rest = 0), но это вызвало проблемы с последующей передачей запроса апстриму:

2011/10/06 08:37:30 [debug] 28656#0: *27 http upstream recv(): 0 (115: Operation now in progress)
2011/10/06 08:37:30 [info] 28656#0: *27 client closed prematurely connection, so upstream connection is closed too while connecting to upstream, clien
2011/10/06 08:37:30 [debug] 28656#0: *27 finalize http upstream request: 499

Апстрим - это Apache, на него ничего не доходит. Напрямую без nginx все работает.
Subject Author Posted

Fake Content-Length header

init October 06, 2011 05:41AM

Re: Fake Content-Length header

Andrey Repin October 06, 2011 04:22PM

Re: Fake Content-Length header

Pavel V. October 07, 2011 04:56AM

Re: Fake Content-Length header

init October 07, 2011 08:44AM

Re[2]: Fake Content-Length header

Михаил Монашёв October 07, 2011 11:32AM

Re: Fake Content-Length header

Valery Kholodkov October 07, 2011 10:04AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 317
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready