Сама проблема в том, что nginx да, ругается в логе, но при этом он еще и отдает 502 ошибку. Поэтому просто искали способ хотя бы игнорировать некорректные заголовки, но пропускать ответ бекэнда клиенту
вт, 20 сент. 2022 г. в 20:41, Maxim Dounin <mdou...@mdounin.ru>: > 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 >
_______________________________________________ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org