Это предупреждение появляется, когда я открываю страницу входа (индекс) 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
Сразу за этим указанное сообщение должно исчезнуть.
Связанные статьи:
- 10 лучших инструментов кэширования с открытым исходным кодом для Linux (92.8%)
- Что выбрать для кэширования: Varnish или NGINX? (92.8%)
- Ошибка «Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin» (РЕШЕНО) (81.7%)
- Установка и настройка Varnish: ч. 1: как установить Varnish в Debian и Ubuntu (74.5%)
- Установка и настройка Varnish: ч. 2: как настроить Varnish, примеры правил (74.5%)
- Google Chrome не сохраняет пароли (РЕШЕНО) (RANDOM - 1.6%)