Расскажите пожалуйста, какие Headers(HTTP/1.0/1) пропускает nginx до
проксируемого
backend'a ? Можно ли как либо обрезать все лишнии заголовки или как то
отметить, что нужно пропустить а что нет. Можно ли отказывать клиенту
в случае слишком длинного заголовка или неправильного еще на уровне nginx?
Дело в том, что backend писан самолично, и большие куски запросов он
анализирует медлено, и я
не уверен, что он всегда правильно будет их понимать и будет адекватно
себя вести.
nginx передаёт все заголовки. Host и Connection обычно меняются.
Запретить конкретный заголовок можно так:
proxy_set_header Name "";
Кроме того, можно запретить передачу всех заголовков и оставить только
выбранные:
proxy_pass_headers off;
proxy_set_header User-Agent $http_user_agent;
proxy_set_header Referer $http_referer;
proxy_set_header ...
Длина клиентских заголовков ограничена директивами
client_header_buffer_size и large_client_header_buffers:
http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#client_header_buffer_sizehttp://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#large_client_header_buffers
Неправильные заголовки не будут передаваться бэкенду, если указано
ignore_invalid_headers on
По умолчанию, такие заголовки передаются.
Игорь Сысоев
http://sysoev.ru