Я настраиваю SSL на своем сервере Apache / 2.4.6 RHEL. В httpd.conf
установите VirtualHosts, как показано ниже ...
<VirtualHost *:80>
ServerName foo.bar
Redirect permanent / https://foo.bar
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /path/to/file
ServerName foo.bar
SSLEngine on
SSLCertificateFile /path/to/file
SSLCertificateKeyFile /path/to/file
SSLCertificateChainFile /path/to/file
</VirtualHost>
Когда я закомментирую DocumentRoot в httpd.conf вне VirtualHosts, веб-браузер возвращает ошибку 404 Запрошенный URL / был не найден на этом сервере.
Нужен ли мне DocumentRoot вне VirtualHost *: 443
? Если нет, то что происходит, когда я это комментирую?
Оказывается, я неправильно настроил ssl.conf отдельно. Исправлен ssl.conf и удален VirtualHost для 443 из httpd.conf, и это прекрасно работает!
В некоторой конфигурации apache будет определен DocumentRoot, который, вероятно, недоступен для сервера, вы можете проверить это, выполнив для вариантов RHEL:
/usr/sbin/httpd -S
и Debian
/usr/sbin/apache2ctl -S
. содержать переменную:
Main DocumentRoot: "/var/www/html"
Вы можете либо настроить ее, либо установить ее в разделе виртуального хоста (я бы предпочел, чтобы эта переменная была такой же, как у SSL vhost).