VirtualDocument Root в VirtualHost с SSL дает 404 ответа - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь настроить очень простую c настройку сервера, где домены обслуживаются из своего собственного каталога. Например:

Я включил mod_vhost_alias и у меня есть один VirtualHost в /etc/apache2/sites-available/main.conf:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/oblik.dev/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/oblik.dev/privkey.pem

    UseCanonicalName Off
    VirtualDocumentRoot /var/www/$0
    ServerAlias *.dev

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Это вывод apache2ctl -S:

VirtualHost configuration:
*:443                  46.101.237.154 (/etc/apache2/sites-enabled/main.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex ssl-stapling-refresh: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

И вот вывод ls -al /var/www/:

total 16
drwxr-xr-x  4 root     root     4096 Mar 18 06:19 .
drwxr-xr-x 14 root     root     4096 Mar 17 06:54 ..
drwxr-xr-x  2 www-data www-data 4096 Mar 17 09:30 ikarov.oblik.dev
drwxr-xr-x  2 www-data www-data 4096 Mar 18 07:14 oblik.dev

У меня есть index.php в обоих каталогах с теми же разрешениями, что и у их папок.

Когда я открываю https://oblik.dev, я получаю 404 То же самое для https://ikarov.oblik.dev. Однако, если я заменим VirtualDocumentRoot на обычный DocumentRoot, сервер будет работать как положено.


Я знаю, что Chrome обрабатывает .dev доменов немного по-другому в этом it применяет SSL , но я настроил SSL-сертификат с подстановочными доменами через Let's Encrypt, так что это не должно быть проблемой.

Чего мне не хватает?

1 Ответ

0 голосов
/ 18 марта 2020

Проблема заключалась в том, что Apache использует % для интерполяции имени вместо $, как Regex. Я должен был изменить это:

VirtualDocumentRoot /var/www/$0

... на это:

VirtualDocumentRoot /var/www/%0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...