Оказалось нельзя просто взять и нормально запустить wordpress в docker контейнере на Synology. Ну то есть оно прекрасно запускается и даже работает до того момента пока вы не захотите использовать реверс прокси Synology, чтоб подсунуть свой сертификат для нормальной работы SSL.
Речь идет об этом образе https://registry.hub.docker.com/_/wordpress/. Он самый популярный, причем с огромным отрывом. Судя по всему официальный.
Так вот, качаем запускаем контейнер. Можно указать путь к файлам через переменную. Лучше это сделать, так как вы будете иметь свободный доступ к файлам wordpress. Тем более для решения проблемы этот доступ нам понадобится.
Переадресуем через реверс прокси 80 и 443 порт на заданный порт контейнера. После этого сайт будет открываться не правильно. Для решения этой проблемы нам надо будет поправить конфиг wordpress. Правим файл wp-config.php добавив строчки ниже.
define('FORCE_SSL_ADMIN', true);
// in some setups HTTP_X_FORWARDED_PROTO might contain
// a comma-separated list e.g. http,https
// so check for https existence
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
Далее перезапускаем контейнер и радуемся быстрой работой сайта с включенным ssl.
Как показала практика это не всегда помогает. В другой установке мне помогла вот такая настройка
define('.COOKIE_DOMAIN.', 'www.mydomain.com');
define('.SITECOOKIEPATH.', '.');
if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
define( 'WP_HOME', 'https://www.mydomain.com' );
define( 'WP_SITEURL', 'https://www.mydomain.com' );
$_SERVER['HTTP_HOST'] = 'www.mydomain.com';
$_SERVER['REMOTE_ADDR'] = 'https://www.mydomain.com';
$_SERVER[ 'SERVER_ADDR' ] = 'www.mydomain.com';
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';