Настройка выглядит следующим образом. У меня есть домен, например example.com
Я установил Apache2 с помощью VirtualDocumentRoot
, таким образом я могу легко указать субдомен в определенной папке:
Файл sites-available / sites.conf
:
ServerName example.com
ServerAlias *.example.com
VirtualDocumentRoot /var/www/websites/%1/
<Directory /var/www/websites/%1/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Итак, когда вы посещаете test.example.com
, он ищет папку test
в каталоге веб-сайтов и обслуживает ее.
Это работает, как задумано, но я хотел использовать Let's Encrypt для SSL. Который еще не может обрабатывать подстановочные сертификаты. Как мне решить такую проблему?
Текущая ситуация:
Установлено, давайте шифруем сертификаты с помощью: sudo certbot --apache -d example.com -d admin.example.com -d www.example.com
Файл: sites-available / 000-default.conf
:
DocumentRoot /var/www/websites/current/
<Directory /var/www/websites/current/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
# Let's Encrypt Redirect
RewriteEngine on
RewriteCond %{SERVER_NAME} =example.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Все поддомены по-прежнему перенаправляются на https
. Только topdomain example.com
, admin.example.com
и www.example.com
должны быть https.
Проблема в том, что вы не просмотрели ни одну из конфигураций в зависимости от сайта.
Важно отметить, что отдельные конфигурационные файлы "для каждого сайта" на самом деле не являются функцией httpd в Apache. Это просто (относительно распространённое) соглашение для удобства администрирования, которое в конце концов использует директиву Include
в главном конфигурационном файле для объединения всего в одну конфигурацию при загрузке конфигурации.
Обычно эти отдельные конфигурационные файлы имеют всё своё содержимое внутри VirtualHost
для проверки их эффектов, но вы, кажется, имеете только глобальную конфигурацию, включая ваши http к https redirects.
Пытаясь создать сертификаты с сервера
certbot certonly -d *.example.com -d admin.example.com -d www.example.com
Wildcard domains are not supported: *.example.com