Apache: Обслуживание “основных” файлов между разными доменами И уникальных файлов для каждого домена

Вопрос или проблема

Сервер: Ubuntu/Apache

Сценарий
У меня есть система, которая используется разными доменами
Я хотел бы, чтобы “основные” файлы использовались для всех доменов (чтобы упростить обслуживание)
Однако у каждого домена должны быть некоторые свои/эксклюзивные директории

Пример:
Основные файлы (все типы файлов – доступны доменами domainA, domainB и т.д.)
/var/www/corefiles

Эксклюзивные файлы для каждого домена (разрешение на чтение и запись)
/var/www/domainA
/var/www/domainB

Я думал о попытке решить это с помощью виртуальных хостов:

<VirtualHost *:80>
  ServerName domainA.com
  DocumentRoot /var/www/domainA

  <Directory /var/www/domainA>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>
  
  Alias ​​/corefiles /var/www/corefiles

  <Directory /var/www/corefiles>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>

  # Логи
  ErrorLog ${APACHE_LOG_DIR}/domainA_error.log
  CustomLog ${APACHE_LOG_DIR}/domainA_access.log combined

  # SSL
  SSLEngine on SSLCertificateFile /etc/ssl/certs/domainA.com.crt
  SSLCertificateKeyFile /etc/ssl/private/domainA.com.key

  # Временные файлы
  php_admin_value session.save_path "/var/www/domainA/tmp"
</VirtualHost>

И в конфигурационном файле для каждого домена:

define('DOMAIN', 'https://domainA/');
define('APPLICATION', '/var/www/corefiles');
define('FILES', '/var/www/domainA/files');

Это возможно?
Есть ли какие-то проблемы с безопасностью?
Есть ли вопросы о SSL сертификатах, куках, временных файлах PHP и т.д.?
Есть ли другие предложения?

Спасибо

Ответ или решение

Настройка Apache для обработки "корневых" и уникальных файлов между различными доменами

Введение

В условиях современного IT важно не только эффективно управлять многими доменами, но и минимизировать затраты на поддержку и обновление файлов. В данной конфигурации на сервере под управлением Ubuntu с использованием Apache вам необходимо настроить систему так, чтобы "корневые" файлы использовались всеми доменами, в то время как каждый домен имел доступ к своим собственным уникальным файлам.

Структура каталогов

Прежде всего, рассмотрим нашу файловую структуру:

  • Общие файлы для всех доменов:
    /var/www/corefiles
  • Эксклюзивные файлы для каждого домена:
    /var/www/domainA
    /var/www/domainB

Настройка Apache с использованием VirtualHost

Для управления несколькими доменами Apache предоставляет функциональность VirtualHost. Чтобы реализовать вашу задачу, вы можете настроить файл конфигурации Apache для каждого домена следующим образом:

<VirtualHost *:80>
  ServerName domainA.com
  DocumentRoot /var/www/domainA

  <Directory /var/www/domainA>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>

  Alias /corefiles /var/www/corefiles

  <Directory /var/www/corefiles>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>

  # Журналирование
  ErrorLog ${APACHE_LOG_DIR}/domainA_error.log
  CustomLog ${APACHE_LOG_DIR}/domainA_access.log combined

  # SSL
  SSLEngine on
  SSLCertificateFile /etc/ssl/certs/domainA.com.crt
  SSLCertificateKeyFile /etc/ssl/private/domainA.com.key

  # Временные файлы PHP
  php_admin_value session.save_path "/var/www/domainA/tmp"
</VirtualHost>

Этот код конфигурирует виртуальный хост для domainA.com, устанавливая корневую директорию и настраивая доступ к общим файлам.

Безопасность

При организации структуры и конфигурации виртуальных хостов важно следить за безопасностью:

  1. Права доступа: Убедитесь, что соответствующие права доступа настроены правильно. Директории /var/www/corefiles и /var/www/domainA должны быть доступны только от имени пользователя, под которым работает веб-сервер.

  2. Настройка SSL: Использование SSL обеспечивает шифрование данных между клиентом и сервером. Убедитесь, что сертификаты корректные и обновленные.

  3. Валидация входящих данных: Если ваш код будет взаимодействовать с файлами, убедитесь, что вы проверяете все входные данные на корректность, чтобы избежать уязвимостей, таких как XSS или RFI.

Проблемы, касающиеся SSL-сертификатов, cookies и временных файлов PHP

  • SSL-сертификаты: Для каждого домена вам необходимы индивидуальные сертификаты. Не используйте общий сертификат для разных доменов, так как это может создать проблемы с безопасностью и доступностью.

  • Cookies: Убедитесь, что cookie имеют правильные флаги, такие как Secure и HttpOnly, чтобы защитить их от атак.

  • Временные файлы PHP: Храните временные файлы в директории, написанной выше. Это поможет в изоляции сессий для каждого домена.

Заключение

Вы полностью правы в своей мысли о том, что данная структура возможна. Контроль доступа, управление правами и использование правильной конфигурации в Apache поможет вам эффективно управлять как общими, так и уникальными файлами для различных доменов. Регулярно проверяйте свои настройки безопасности и следите за обновлениями, чтобы избежать возможных уязвимостей.

Если у вас есть дополнительные вопросы или вы нуждаетесь в особенностях, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...