Using Plesk SDK API, an extension can make changes to the web server
configuration.
- Class
 pm_Hook_WebServer
 allows to describe custom directives for domains to be added to the
 configuration files.
- Class
 pm_WebServer
 is used to instruct the web server to update the configuration for
 the specified domain.
Note: The following sample project is provided by Plesk to illustrate how
an extension can add changes to the web server configuration files:
https://github.com/plesk/ext-web-server.
Adding Custom Configuration
The following methods of the class
pm_Hook_WebServer
are used to describe custom directives introduced by the extension into
the web server configuration files:
- 
getDomainApacheConfig(pm_Domain $domain)- returns the string
 which will be added to the Apache configuration as a
 <VirtualHost></VirtualHost>custom directive.
- 
getDomainNginxConfig(pm_Domain $domain)- returns the string
 which will be added to nginx configuration as a{...}custom
 directive when nginx is used as the main web server.
- 
getDomainNginxProxyConfig((pm_Domain $domain)- returns the
 string which will be added to nginx configuration as a{...}
 custom directive when nginx is used in proxy mode.
- 
getDomainIisConfig(pm_Domain $domain)- returns XML as a string
 which will be added to the Plesk IIS configurator.
Every time a domain is reconfigured, these methods will be called.
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();
    }
}
Updating Domain Configuration
Method
pm_WebServer::updateDomainConfiguration()
is used to immediately update the specified domain configuration. For
example, this can be done when some additional service was activated on
that domain by the extension.
$webServerManager = new pm_WebServer();
$webServerManager->updateDomainConfiguration(new pm_Domain(1));