Настройка такая. У меня есть домен, например example.com
Я установил Apache2 с VirtualDocumentRoot
, таким образом я могу легко указать поддомен на определенную папку:
файл sites-available/websites.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
. Только топдомен example.com
, admin.example.com
и www.example.com
должно быть https.
Проблема в том, что вы не ограничили конфигурацию каким-либо образом для конкретного сайта.
Важно отметить, что отдельные файлы конфигурации «для каждого сайта» на самом деле не являются функцией Apache httpd. Это просто (относительно распространенное) соглашение для удобства администрирования, которое в конечном итоге использует Include
в основном файле конфигурации, чтобы объединить все вместе в единую конфигурацию при загрузке конфигурации.
Обычно все содержимое этих отдельных файлов конфигурации находится внутри VirtualHost
чтобы оценить их влияние, но, похоже, у вас есть только глобальная конфигурация, включая перенаправления с http на https.
Попытка создать сертификаты с сервера
certbot certonly -d *.example.com -d admin.example.com -d www.example.com
Wildcard domains are not supported: *.example.com