# Веб-сервер

Используя 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));