zaLinux.ru

Ошибка phpMyAdmin «Существует несоответствие между HTTPS, указанным на сервере и клиенте» (РЕШЕНО)


Это предупреждение появляется, когда я открываю страницу входа (индекс) phpMyAdmin:

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

В английском варианте:

There is a mismatch between HTTPS indicated on the server and client. This can lead to a non working phpMyAdmin or a security risk. Please fix your server configuration to indicate HTTPS properly.

Ошибка должна быть вызвана с балансировщиком нагрузки между моим клиентом и самим phpmyadmin. SSL завершается на балансировщике нагрузки, поэтому используемый URL (я полагаю, что phpmyadmin получает в заголовках запросов) - https://mydomain/phpmyadmin.

Балансировщик нагрузки связывается с phpmyadmin через http, поэтому URL-адрес, используемый между lb и pma, — http://mydomain/phpmyadmin (без https).

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

Решение для прокси-сервера Nginx

Одно из решений описано пользователем Nginx:

У меня точно такая же установка, как вы описываете. Передний балансировщик нагрузки действует как обратный прокси, а так же как терминатор SSL/TLS. LB общается по обычному http с внутренним сервером, на котором работает phpMyAdmin.


Когда я обновился с 4.0.4.1 до 4.9.0.1, я получил такое же предупреждение на экране входа в phpMyAdmin, что и вы. Я смог решить эту проблему на обратном прокси-сервере, «подделав» протокол с http на https. В моем случае обратный прокси-сервер — это веб-сервер Nginx, и как раз перед тем, как перейти на внутренний сервер, я добавил X-Forwarded-Proto:

server {
	listen 443;
	server_name my.phpmyadmin.example.com;

[... log и ssl настройки ...]

	location / {
		include /etc/nginx/proxy.conf;
		proxy_set_header X-Forwarded-Proto https;
		proxy_pass http://backendserver;
	}
}

Добавление «proxy_set_header X-Forwarded-Proto https;» это сообщает внутреннему серверу, что связь клиента с прокси происходит через https. Без установки этого заголовка phpMyAdmin, вероятно, идентифицирует (не уверен, просто предположение), что он был загружен по URL-адресу https://, но связь (между обратным прокси-сервером и сервером phpMyAdmin) происходила через http. Следовательно, это правильное предупреждение.

Как только Nginx был перезагружен, предупреждение на экране входа в phpMyAdmin исчезло.

Решение для кэширующего прокси-сервера Varnish

Для кэширующего прокси-сервера Varnish решение точно такое же — добавить HTTP заголовок X-Forwarded-Proto со значением «https».

Это нужно сделать в конфигурационном файле /etc/varnish/default.vcl:

sub vcl_recv {
	set req.http.X-Forwarded-Proto = "https";
}

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

systemctl restart varnish

Сразу за этим указанное сообщение должно исчезнуть.


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

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

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