Два сайта с двумя разными файлами журналов - SSL Apache2 Ubuntu - PullRequest
0 голосов
/ 31 мая 2018

У меня есть два веб-сайта на одном веб-сервере (Ubuntu 16.04.2 LTS - Apache / 2.4.18).Все работает хорошо, когда я пытаюсь получить доступ к обоим веб-сайтам, используя HTTP (порт 80).Это содержимое файла vhosts.conf:

<VirtualHost *:80>
    ServerName site1
    DocumentRoot /var/www/html/site1
    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
<VirtualHost *:80>
    ServerName site2
    DocumentRoot /var/www/html/site2
    ErrorLog ${APACHE_LOG_DIR}/site2_error.log
    CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>

Итак, оба сайта доступны через "mydomain.com/site1" и "mydomain.com/site2".Я установил сертификат Let's Encrypt и, чтобы он работал, я настроил виртуальный хост следующим образом:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName mydomain.com
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/site_error.log
    CustomLog ${APACHE_LOG_DIR}/site_access.log combined
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Я могу получить доступ к обоим сайтам с помощью SSL (порт 443), но не могу использоватьразные лог-файлы для разных сайтов.Я пробовал что-то вроде этого:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName mydomain.com/site1
    DocumentRoot /var/www/html/site1
    ErrorLog ${APACHE_LOG_DIR}/site1_error.log
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
    Alias /site1 /var/www/html/site1
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
<VirtualHost *:443>
    ServerName mydomain.com/site2
    DocumentRoot /var/www/html/site2
    ErrorLog ${APACHE_LOG_DIR}/site2_error.log
    CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
    Alias /site2 /var/www/html/site2
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

Но это не работает.Как я могу различить два сайта, чтобы иметь два разных файла журнала?

1 Ответ

0 голосов
/ 31 мая 2018

По ссылке, предложенной CBroe, я нашел решение с помощью директивы SetEnvIf.Конечная рабочая конфигурация виртуального хоста выглядит следующим образом:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName mydomain.com
    DocumentRoot /var/www/html
    SetEnvIf Request_URI ^/site1(/|$) site1
    SetEnvIf Request_URI ^/site2(/|$) site2
    CustomLog ${APACHE_LOG_DIR}/site1_access.log combined env=site1
    CustomLog ${APACHE_LOG_DIR}/site2_access.log combined env=site2
    ErrorLog ${APACHE_LOG_DIR}/site_error.log
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
...