ZaLinux.ru

Ошибка «Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin» (РЕШЕНО)

При открытии страницы входа phpMyAdmin вы можете увидеть сообщение:

Существует несоответствие между HTTPS, указанным на сервере и клиенте. Это может привести к неработоспособному phpMyAdmin или угрозе безопасности. Исправьте конфигурацию своего сервера, чтобы правильно указать HTTPS.

Это ещё не критическая ошибка, но если вы это видите, дальше, при попытке в phpMyAdmin, может возникнуть серьёзная проблема:

Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.

Её перевод: «не удалось установить куки сеанса. Может быть, вы используете HTTP вместо HTTPS для доступа к phpMyAdmin».

На самом деле, две указанные ошибки необязательно связаны. Точнее говоря, они могут быть последствием, например, использования прокси-сервера, но первая ошибка не является причиной второй.

Причина невозможности установить кукиз в том, что сервер на получил кукиз сеанса, хотя пытался их установить, поскольку до этого получил верные учётные данные. Конечных причин может быть две:

  • кукиз не были установлены в User Agent клиента
  • кукиз были удалены во время передачи их серверу

Примером такой ситуации является использование кэширующего прокси-сервера Varnish. Но можно предположить, что проблема может возникнуть и с другими прокси-серверами.

Связанная статья: Установка и настройка Varnish: ч. 1: как установить Varnish в Debian и Ubuntu

Кэширующий прокси-сервер может быть настроен удалять кукиз. Дело в том, что запросы, в которых присылаются кукиз, не кэшируются. Подробнее смотрите в «Как удалить куки, которые препятствую кэшированию».

Связанная статья: Установка и настройка Varnish: ч. 2: как настроить Varnish, примеры правил

Если причиной проблемы является Varnish, то в конфигурационном файле /etc/varnish/default.vcl нужно добавить в исключение URL или хост на котором размещён phpMyAdmin.

Как удалять кукиз со всех хостов, кроме страниц определённого хоста

Если вы хотите, чтобы кукиз удалялись для страниц всех хостов, кроме страниц определённого хоста, то используйте настройку вида:

sub vcl_recv {
	if (! req.http.host ~ "(www\.)?ЗДЕСЬ\.ДОМЕН") {
		unset req.http.Cookie;
	}
}

Вместо «ЗДЕСЬ\.ДОМЕН» впишите домен, на котором не нужно удалять кукиз. Обратите внимание на экранирование точки.

Пример настройки, в которой удаляются кукиз со всех доменов, кроме страниц доменов wxmaxima.ru и softocracy.ru:

sub vcl_recv {
	if (! req.http.host ~ "(www\.)?wxmaxima\.ru" && ! req.http.host ~ "(www\.)?softocracy\.ru") {
		unset req.http.Cookie;
	}
}

Внимание:

1. Перезапустите службу varnish, чтобы изменения вступили в силу:

systemctl restart varnish

2. В конфигурационном файле используйте «unset req.http.Cookie;» только один раз! Если вы будете использовать два и более раза, то поведение будет не тем, каким вы ожидаете. Сгруппируйте все нужные вам условия с помощью логических И и ИЛИ перед единственным использованием «unset req.http.Cookie;».

Как удалять кукиз со всех страниц за исключением определённых URL

Если вы хотите исключить из удаления кукиз только определённые страницы, то используйте настройку вида:

sub vcl_recv {
	if (! req.url ~ "^/путь/для/исключения/") {
		unset req.http.Cookie;
	}
}

Пример настройки, в которой удаляются кукиз со всех доменов, кроме страниц доменов wxmaxima.ru и страниц на любых доменах, в чьём URL адресе есть строка «phpmyadmin»:

sub vcl_recv {
	if (! req.http.host ~ "(www\.)?wxmaxima\.ru" && ! req.url ~ "^/phpmyadmin") {
		unset req.http.Cookie;
	}
}

Внимание:

1. Перезапустите службу varnish, чтобы изменения вступили в силу:

systemctl restart varnish

2. В конфигурационном файле используйте «unset req.http.Cookie;» только один раз! Если вы будете использовать два и более раза, то поведение будет не тем, каким вы ожидаете. Сгруппируйте все нужные вам условия с помощью логических И и ИЛИ перед единственным использованием «unset req.http.Cookie;».

Если причиной проблемы является другой кэширующий прокси-сервер или просто прокси-сервер, то добавьте адрес phpMyAdmin или домен, на котором располагается phpMyAdmin в исключения.

Рекомендуемые статьи:

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

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