Используя Plesk SDK API, расширение может изменять конфигурацию веб-сервера.

  • Класс pm_Hook_WebServer позволяет описывать персональные директивы для доменов, которые должны быть добавлены к файлам конфигурации.
  • Класс pm_WebServer используется, чтобы дать инструкции веб-серверу для обновления конфигурации для указанного домена.

Примечание: Следующий пример проекта предоставлен Plesk, чтобы проиллюстрировать добавление изменений в конфигурационные файлы веб-сервера: https://github.com/plesk/ext-web-server.

Добавление персональной конфигурации

Следующие методы класса pm_Hook_WebServer используются, чтобы описать персональные директивы, добавленные расширением в конфигурационные файлы веб-сервера:

  • getDomainApacheConfig(pm_Domain $domain) – возвращает строку, которая будет добавлена к конфигурации Apache в качестве персональной директивы <VirtualHost></VirtualHost>.
  • getDomainNginxConfig(pm_Domain $domain) – возвращает строку, которая будет добавлена к конфигурации nginx в качестве персональной директивы {...}, когда nginx используется как основной веб-сервер.
  • getDomainNginxProxyConfig((pm_Domain $domain) – возвращает строку, которая будет добавлена к конфигурации nginx в качестве персональной директивы {...}, когда nginx используется в режиме proxy.
  • getDomainIisConfig(pm_Domain $domain) – возвращает XML как строку, которая будет добавлена к конфигуратору Plesk IIS.

Эти методы будут вызываться каждый раз при перенастройке домена.

class Modules_WebServer_WebServer extends pm_Hook_WebServer
{
    public function getDomainApacheConfig(pm_Domain $domain)
    {
        return '# Apache config for domain: ' . $domain->getName();
    }
    public function getDomainNginxConfig(pm_Domain $domain)
    {
        return '# Nginx config for domain name: ' . $domain->getName();
    }
}

Настройки конфигурации домена

Метод pm_WebServer::updateDomainConfiguration() используется для того, чтобы немедленно обновить конфигурацию указанного домена. Например, это можно сделать после того, как какая-либо дополнительная служба была активирована расширением на этом домене.

$webServerManager = new \pm_WebServer();
$webServerManager->updateDomainConfiguration(new \pm_Domain(1));