WP, NGINX, proxy_pass и плагин queryMonitor при запросе AJAX

Очень интересная ситуация получается с плагином QueryMonitor.

Установил я сегодня сайт WP(apache) за NGINX (proxy_pass, ssl). Даже статью написал про это WP with Nginx SSL proxypass.

Ну и всё было очень даже хорошо. Но тут произошел странный сбой: стал фильтровать список плагинов по ключевому слову и результатом было молчание. Посмотрел в консоль браузера — пишет ошибку 503 при POST запросе https://www.mysprav.ru/wp-admin/admin-ajax.php.

Начал разбираться. Помогли логи ошибок. Сначала глянул со стороны сервера WP Apache там ответ выглядел как 200. Потом глянул на логи NGINX. И вот тут оказалась проблема.

Оказалось что плагин QueryMonitor подмешивает свои данные(замеры и тд) в специальные хедеры ответа на запрос.

Скорее всего такое поведение связано с тем что запрос был сделан через ajax. Обычный GET запрос страницы — QueryMonitor просто добавляет информация в виде html в body документа. В ajax запросах так не получится сделать поэтому разработчики добавили инфу в хедеры.

Но NGINX со своим proxy_pass не расчитан на такие большие хедеры и поэтому при слишком большом хедере падал и выдавал ошибку.

2022/03/24 19:45:01 [error] 9167#0: *14310 upstream sent too big header while reading response header from upstream, client: 5.143.169.170,...

Решение нашел тут:
https://stackoverflow.com/questions/23844761/upstream-sent-too-big-header-while-reading-response-header-from-upstream

Выбрал подход увеличения размера буфера. Просто добавил эти строчки в начало файла настройки сервера.

http {
  proxy_buffer_size 64k;
  proxy_buffers 4 64k;
  proxy_busy_buffers_size 64k;
  ...

И всё заработало. 🙂

Как это всё отражается на перформансе сайта пока мне не ясно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *