Как удалить заголовок запроса accept-encoding в nginx?

Как удалить заголовок запроса accept-encoding в nginx?

Недавнее обновление zlib из-задыра в безопасностиПохоже, что это вызывает серьезную проблему при обслуживании PHP-FPM 8.0 через nginx на Ubuntu focal. Любые запросы с кодировкой gzip терпят неудачу прямо в начале ответа, хотя nginx регистрирует запросы как успешные и с правильным размером. Если я делаю запросы без заголовка Accept-Encoding, все работает отлично. В качестве обходного пути я пытаюсь отключить всю поддержку gzip, но это, кажется, удивительно устойчиво... Пока что я пробовал следующие настройки в nginx:

gzip off;
fastcgi_buffering off;
add_header Accept-Encoding "";
proxy_set_header Accept-Encoding "";

и я также проверил, нет ли других директив, которые снова включают их, проверив nginx -Tвывод с помощью grep.

Однако если я сбрасываю заголовки запроса из PHP (т.е. после того, как он прошел через nginx), я все равно вижу этот заголовок accept:

Accept-Encoding: deflate, gzip, br, zstd

так что nginx этонетудаляя его из запроса перед тем, как он будет передан в PHP-FPM. Я пробовал устанавливать эти директивы на уровне сервера и местоположения, с теми же результатами.

В PHP я отключил всю буферизацию вывода, но, похоже, отключить zlib без перекомпиляции невозможно.

Как заставить nginx удалить этот заголовок запроса, чтобы ни nginx, ни PHP не сжимали ответы?

решение1

proxy_set_headerДиректива предназначена дляпроксированиезапросы, т.е. для их прохождения черезHTTP-to-HTTP-серверная цепочка. И у вас естьFastCGIследующий сервер в цепочке, поэтому ваш набор директив начинается с fastcgi_.

Вы можете полностью отключить передачу заголовков запросов в PHP, установив fastcgi_pass_request_headersзначение off, или можете удалить определенный заголовок, сбросив его с помощью fastcgi_set_header.

решение2

Для fastcgi используется немного другой синтаксис. Вместо установки заголовка вы устанавливаете параметр, соответствующий заголовку. Имена параметров начинаются с "HTTP_", затем следует имя заголовка в верхнем регистре. В имени параметра тире заменяются подчеркиваниями.

fastcgi_param HTTP_ACCEPT_ENCODING "";

Связанный контент