Рейтинг:0

Невозможно обслуживать изображения с сайта WordPress - ответ искажен

флаг in

Я пытаюсь развернуть Wordpress за Traefik в Azure, используя PersistentVolume, поддерживаемый Azure Files. По большей части это работает. Я мог установить WordPress, настроить его, получить к нему доступ извне, внести изменения в контент и т. д.

Образ докера является официальным на Hub (https://hub.docker.com/_/wordpress). Единственное изменение, которое я сделал, это указать клиенту MYSQL использовать SSL, иначе все остальное будет ванильным.

Странно то, что никакие изображения не обслуживаются правильно. Apache считает, что это им подходит, но Traefik отклоняет ответ как искаженный. В частности, он получает «байты» вместо кода ответа и разрывает соединение, возвращая 500 обратно в браузер.

Я проследил это до самого сервера Apache и зашел в тупик. Вот что я вижу - опять же, только для изображений.

Это запускается изнутри контейнера, находящегося на AKS.

root@wordpress-7bd5ccfd77-drm96:/var/www/html# curl --http0.9 -iv --raw http://localhost:80/wp-includes/images/spinner.gif
* Попытка ::1:80...
* Подключен к локальному хосту (::1) порт 80 (#0)
> ПОЛУЧИТЬ /wp-includes/images/spinner.gif HTTP/1.1
> Хост: локальный
> Пользовательский агент: curl/7.74.0
> Принять: */*
>
гэс: байты
Длина контента: 3656
Тип контента: изображение/gif

GIF89a...

Как видите, часть HTTP-ответа является усеченный.

Если я сделаю то же самое, но попрошу содержимое страницы, у меня не будет никаких проблем.

root@wordpress-7bd5ccfd77-drm96:/var/www/html# curl --http0.9 -iv --raw http://localhost:80/
* Попытка ::1:80...
* Подключен к локальному хосту (::1) порт 80 (#0)
> ПОЛУЧИТЬ/HTTP/1.1
> Хост: локальный
> Пользовательский агент: curl/7.74.0
> Принять: */*
>
* Отметить пакет как не поддерживающий многоразовое использование
< HTTP/1.1 200 ОК
HTTP/1.1 200 ОК
< Дата: понедельник, 17 января 2022 г., 09:15:33 по Гринвичу
...

Если я копирую один и тот же файл из модуля удаленно или удаленно через общий файловый ресурс Azure Files, он проходит, как и ожидалось, поэтому он не поврежден на томе или в том, как том смонтирован.

kubectl cp it-scribe-wordpress/wordpress-794cbff687-ts6q9:/var/www/html/wp-includes/images/spinner.gif ./spinner.gif
tar: Удаление ведущего `/' из имен элементов

Я получаю совершенно полезный spinner.gif.

AFAICT это происходит только с изображениями. Любые мысли будут высоко оценены.

Ян

Изменить: причина, по которой я использую --http0.9, заключается в том, что без него curl терпит неудачу раньше и не позволяет мне увидеть ответ. Флаг влияет только на обработку curl, а не на тело запроса. Вот пример без флага.

root@wordpress-7bd5ccfd77-drm96:/var/www/html# curl -iv --raw http://localhost:80/wp-includes/images/spinner.gif
* Попытка ::1:80...
* Подключен к локальному хосту (::1) порт 80 (#0)
> ПОЛУЧИТЬ /wp-includes/images/spinner.gif HTTP/1.1
> Хост: локальный
> Пользовательский агент: curl/7.74.0
> Принять: */*
>
* Получено HTTP/0.9, когда это не разрешено

* Закрытие соединения 0
curl: (1) Получено HTTP/0.9, когда это не разрешено
флаг jp
Почему вы запрашиваете HTTP/0.9?
IanJ avatar
флаг in
Так что мне потребовалось несколько часов, чтобы понять! Если я не использую этот параметр, curl выдает мне эту ошибку и не позволяет мне увидеть полный ответ. Как видите, он по-прежнему делает запрос как HTTP/1.1. Я обновлю вопрос, чтобы включить вывод без --http0.9
Рейтинг:0
флаг in

Я считаю, что существует проблема со взаимодействием между Файлами Azure, AKS CSI и Apache. Я могу воспроизвести это поведение только с помощью файлов Azure — другие формы подключения тома (диск, файлы контейнеров, NFS) работают должным образом.

Есть некоторые свидетельства других людей, которые попали в это: https://github.com/Azure/AKS/issues/2614

Я работал с использованием монтирования NFS.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.