При настройке веб-сервера Apache можно столкнуться с ошибкой:
Bad Request Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please.
Она переводится так: «Плохой запрос. Ваш браузер отправил запрос, который этот сервер не может понять. Причина: вы обращаетесь на обычном HTTP к порту сервера, на котором включён SSL. Вместо этого используйте HTTPS схему, для доступа к этому URL».
Такая проблема может возникнуть после Перехода Apache на HTTPS. Причём у неё может быть как очевидная причина, например, вы пытаетесь открыть адрес вида: http://localhost:443. В этом случае понятно — вы обращаетесь к порту 443, но используете протокол HTTP, в то время, как веб-сервер на этом порту ожидает HTTPS и ваш HTTP он не понимает.
Но эта же самая ошибка может возникнуть и при обращении по обычному адресу http://localhost. В этом случае нужно искать проблему в неправильной конфигурации.
Пример такой неправильной конфигурации, включение SSLEngine:
SSLEngine on
в контексте всего сервера, а не определённого виртуального хоста.
Если использовать SSLEngine on в главном конфигурационном файле и не поместить в контейнер VirtualHost, то будет включено HTTPS для всего сервера, для всех портов, в том числе и для 80 порта.
Поэтому решение очевидно, нужно убрать SSLEngine on из главного конфигурационного файла и поместить настройки виртуального хоста.
Пример корректной настройки:
LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost _default_:443> DocumentRoot "c:/Server/data/htdocs/" ServerName localhost:443 ServerAdmin admin@example.com ErrorLog "${SRVROOT}/logs/error-ssl.log" TransferLog "${SRVROOT}/logs/access-ssl.log" SSLEngine on SSLCertificateFile "C:\Server\certs\localhost.crt" SSLCertificateKeyFile "C:\Server\certs\localhost.key" </VirtualHost>
Перезапустите веб-сервер, чтобы изменения вступили в силу. После этого проблема должна исчезнуть — при обращении к 443 порту будет задействован HTTPS протокол, а при обращении к 80 порту будет корректно задействован протокол HTTP.
Связанные статьи:
- Apache SSL: переход Apache на HTTPS (86.8%)
- Решение проблемы «AH00369: Failed to open the Windows service manager, perhaps you forgot to log in as Adminstrator?» (64.1%)
- Как исправить «Configuration File (php.ini) Path» no value (63.2%)
- Ошибка «Composer detected issues in your platform: Your Composer dependencies require the following PHP extensions to be installed: mysqli, openssl» (РЕШЕНО) (63.2%)
- Окно Apache появляется и сразу пропадает (РЕШЕНО) (58.1%)
- Как добавить путь до PHP в переменную окружения PATH в Windows (RANDOM - 50%)