Я пытаюсь развернуть 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, когда это не разрешено