Как переключить работающий сайт Apache на новый с помощью настройки VirtualHost

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

Как переключить работающий сайт Apache на новый через конфигурацию VirtualHost
Я унаследовал настройки веб-сервера и веб-брандмауэра и не являюсь гуру Apache, но разобрался в некоторых вещах. Например, я могу добавить новые поддомены, такие как https://mynewsite.ourwebsite.com, настроив файлы .conf в каталоге sites-enabled как на веб-брандмауэре, так и на веб-сервере. Брандмауэр проксирует трафик на веб-сервер, который затем направляет его на соответствующий бэкенд, работающий на Django и Gunicorn.

Теперь мне нужно заменить старый сайт (www.oursite.com) на новый бета-сайт (newsite.oursite.com), чтобы сделать новый сайт рабочим. Конкретно, когда пользователи заходят на www.oursite.com, им должен предоставляться content из newsite.oursite.com.

Судя по всему, мне нужно обновить ServerName и ServerAlias в Apache .conf файлах как на веб-брандмауэре, так и на веб-сервере. Вот текущая настройка:

Существующий работающий сайт (www.oursite.com) на веб-сервере

<VirtualHost 10.5.0.x2:443 10.2.0.x2:443 10.3.0.x2:443>
    ServerName www.oursite.com
    ServerAlias www www1 www1.oursite.com
    <If "%{HTTP_HOST} != 'www.oursite.com'">
         Redirect "/" "https://www.oursite.com/"    
    </If>
    DocumentRoot /home/oursite/public_html/WWW
    ErrorLog /home/oursite/wwwlogs/error_log
    CustomLog /home/oursite/wwwlogs/access_log common
    ScriptAlias /cgi-bin/ "/home/oursite/public_html/CGI/"
    ScriptAlias /cgi/ "/home/oursite/public_html/CGI/"

    Include extra/ssl-certs  # Сгенерировано certbot
</VirtualHost>

Новый бета-сайт (newsite.oursite.com) на веб-сервере

<VirtualHost *:80>
    ServerName newsite.oursite.com
    ServerAlias newsite
    Redirect "/" "https://newsite.oursite.com/"
</VirtualHost>

<VirtualHost 10.5.0.x2:443>
    ServerName newsite.oursite.com
    ServerAlias newsite
    <If "%{HTTP_HOST} != 'newsite.oursite.com'">
        Redirect "/" "https://newsite.oursite.com/"
    </If>

    SSLOptions +StdEnvVars
    Include extra/wildcard-ssl-certs  # Работает!

    ProxyRequests Off
    ProxyPass       /    http://10.5.0.x4:8080/  
    ProxyPassReverse    /    http://10.5.0.x4:8080/  
</VirtualHost>

Вопросы:

  1. Достаточно ли переключить ServerName и ServerAlias в этих файлах .conf (на
    веб-сервере и брандмауэре), чтобы newsite.oursite.com
    стал www.oursite.com?

  2. Если я хочу сохранить старый сайт как historic.oursite.com, могу ли я
    просто переименовать его ServerName и обновить DNS CNAME?

  3. Есть ли какие-либо распространенные ошибки в такой настройке? Будут ли
    другие конфигурации (например, в брандмауэре или где-то еще), которые нужно
    проверить?

Я предпочел бы избежать вмешательства в tinyDNS, если это возможно — если все, что мне нужно сделать, это изменить файлы Apache .conf и перезапустить Apache, это было бы идеальным вариантом.

Любые советы от опытных пользователей Apache и проксирования будут очень полезны!

.

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

В процессе переключения живого Apache-сайта на новый через конфигурацию виртуальных хостов (VirtualHost) важно учитывать несколько аспектов, чтобы сделать это эффективно и минимально влиять на пользователей. Ваша текущая задача заключается в замене старого сайта (www.oursite.com) на новый бета-сайт (newsite.oursite.com), с сохранением старого сайта под новым доменным именем (historic.oursite.com). Рассмотрим, как можно это реализовать и какие шаги предпринять.

Теория

Конфигурация VirtualHost в Apache позволяет ассоциировать особые серверные настройки с конкретными доменными именами. Это может включать указание корневой директории, к которой пользователи получат доступ при посещении соответствующего URL, и определение прокси-правил для доставки запросов на backend-серверы (например, Django с Gunicorn).

Переключение ServerName и ServerAlias – это ключевое действие для изменения того, какой сайт отображается по определенному URL. Однако это не единственный аспект, который нужно учитывать. В Apache важно также внести изменения в файлы конфигурации как на веб-сервере, так и на межсетевом экране, если функции последнего используются для маршрутизации и фильтрации трафика.

Пример

Рассмотрим ваш текущий конфигурационный файл для Apache. В настоящем виде у вас есть два виртуальных хоста для старого и нового сайта. Чтобы новый сайт заменил старый, вам нужно:

  1. Изменить ServerName и ServerAlias в файлах конфигурации веб-сервера:

    • Убедитесь, что ServerName для www.oursite.com теперь указывает на новый сайт newsite.oursite.com.
    • Переместите старый сайт, задав для него новый ServerName как historic.oursite.com.
  2. Обновить конфигурацию на межсетевом экране:

    • Проверьте, чтобы межсетевой экран правильно перенаправлял трафик для новых конфигураций доменных имен.
  3. Редактирование DNS-записей (если потребуется):

    • Хотя вы хотите минимизировать вмешательство в DNS, возможно, потребуется изменить записи CNAME, особенно если межсетевой экран зависит от них для маршрутизации.

Применение

Теперь перейдем к конкретным шагам:

  1. Редактирование конфигурации веб-сервера:

    • Откройте ваши конфигурационные файлы .conf для соответствующих виртуальных хостов.
    • Для старого сайта, который станет историческим, измените:
      ServerName historic.oursite.com
      ServerAlias старые_алиасы
    • Для нового сайта, замещающего старый, измените:
      ServerName www.oursite.com
      ServerAlias newsite
  2. Проверка межсетевого экрана:

    • Убедитесь, что правила маршрутизации на уровне межсетевого экрана отправляют трафик на правильные IP-адреса и порты.
  3. Перезапуск Apache:

    • После внесения изменений перезапустите Apache для применения новых конфигураций:
      sudo systemctl restart apache2
  4. Обработка возможных проблем:

    • Убедитесь, что SSL-сертификаты применимы и корректно загружены для новых доменных имен.
    • Проверка логов error_log и access_log поможет выявить и исправить возникающие ошибки.

Общие подводные камни

Обратите внимание на следующие моменты:

  • SSL-сертификаты: Возможно, потребуется пересертифицировать новые домены или обеспечить, чтобы все сертификаты загрузились корректно.
  • Проверка межсетевого экрана: Если межсетевой экран проводит дополнительные манипуляции с заголовками HTTP или фильтрацию, убедитесь, что они соответствующим образом настроены для новых конфигураций.
  • Тестирование и мониторинг: После внесения изменений тщательно протестируйте переключение, желательно в тестовой среде, чтобы минимизировать возможные сбои в продуктивной.

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

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

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