Web Server

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.

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));