Установка WordPress в Docker Synology

Оказалось нельзя просто взять и нормально запустить 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';

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

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