Hello! On Tue, Sep 20, 2022 at 07:35:32PM +0300, Igor Savenko wrote:
> Добрый день! Странная ситуация, апстримом для nginx является лайтспид, и > вот этот лайтспид на http2 отдает нормальные заголовки ответа, а для > http/1.1 некорректные, например, вот это выводит curl: > curl -s -v --http1.1 -o /dev/null https://domain.com/images/12345.png > --resolve domain.com:443:1.2.3.4 > ... > > GET /images/12345.png HTTP/1.1 > > Host: domain.com > > User-Agent: curl/7.74.0 > > Accept: */* > > > < HTTP/1.1 200 OK > < Connection: Keep-Alive > < Keep-Alive: timeout=5, max=100 > expires: Thu, 20 Oct 2022 15:48:24 GMTc > < content-type: image/png > < last-modified: Tue, 08 Feb 2022 17:03:26 GMT > < accept-ranges: bytes > < content-length: 847 > < date: Tue, 20 Sep 2022 15:48:24 GMT > < server: LiteSpeed > > Обратите внимание на начало заголовка expires, он не начинается с < > символа, следовательно, или в начале этого, или в конце предыдущего > заголовка приезжает некорректный символ. Насколько я знаю, nginx не > поддерживает http/2 для общения с апстримом. Отсюда вопрос. Есть дешевый > способ заставить nginx игнорировать некорректные произвольные заголовки > (полностью заголовок, а не только название) от апстрима, а не только > заранее определенные, как в директиве proxy_ignore_headers > <http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers> > ? Судя по выводу curl'а, между предыдущим заголовком и expires вместо CRLF или LF стоит просто CR. В логах nginx'а при этом должна быть какая-то такая ошибка: 2022/09/20 12:59:16 [error] 2866#100147: *1 upstream sent invalid header: "X-Foo: foo\x0d..." while reading response header from upstream... Лечить это надо на бэкенде, подобных вольностей в обращении с протоколом nginx не допускает и до какой-либо обработки заголовков и/или их игнорирования тут дело не дойдёт, всё сломается при попытке парсинга заголовков ответа. Если в краткосрочной перспективе с бэкендом сделать ничего нельзя, то в качестве временного workaround'а можно попробовать проксировать по HTTP/2 через grpc_pass. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org