Назад | Перейти на главную страницу

SSL VirtualHost не использует DocumentRoot

Я пытаюсь настроить самозаверяющий сертификат SSL между моим собственным VPS и Cloudflare (рядом с Полный SSL). Для этого я использую следующие VirtualHosts:

<VirtualHost *:80>
        ServerName domain.com
        Redirect permanent / https://www.domain.com/
</VirtualHost>

<VirtualHost *:443>
        ServerName www.domain.com
        DocumentRoot /var/www/public/www

        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>

Но всякий раз, когда я пытаюсь получить доступ к domain.com, он возвращает 403 Forbidden и я получаю следующую ошибку в моих журналах apache2:

[Fri Jan 30 00:19:23 2015] [error] [client (ip)] Directory index forbidden by Options directive: /var/www/public/

Это означает, что он пытается получить доступ к DocumentRoot по умолчанию, установленному в apache2.conf:

ServerAdmin server@domain.com
DocumentRoot /var/www/public

Обратите внимание, что это делает работать, когда я меняю порт второго VirtualHost на 80 и прокомментирую 3 строки о SSL.

Итак, мой вопрос: почему не используется DocumentRoot, который я указал в VirtualHost (*:433)?

РЕДАКТИРОВАТЬ

Когда я приостанавливаю Cloudflare и перехожу в https://www.domain.com Я могу получить к нему доступ (конечно, с предупреждением, потому что сертификат самоподписанный). Так может это как-то связано с Cloudflare?

Я предполагаю, что вам нужно включить NameVirtualHost для порта SSL.
Это можно сделать, отредактировав файл /etc/apache2/ports.conf.
Здесь вы можете увидеть конфигурацию порта 80:

ИмяVirtualHost *: 80
Слушай 80

Вы также можете увидеть теги IFmodule mod_ssl.c.
По умолчанию внутри тегов должно быть только «Listen 443», и вам просто нужно добавить «NameVirtualHost *: 443» над строкой «Listen 443». Я считаю, что это должно решить вашу проблему.

По-видимому, у меня нет репутации, чтобы публиковать изображения, так что пожалуйста: http://i.imgur.com/vGCEAGb.png

РЕДАКТИРОВАТЬ: не забудьте перезапустить Apache.