Files
server/opt/psa/admin/conf/templates/default/domain/domainVirtualHost.php
cutemeli 0bfc6c8425 Initial
2025-12-22 10:32:59 +00:00

381 lines
15 KiB
PHP

<?php
/**
* @var Template_VariableAccessor $VAR
* @var array $OPT
*/
?>
<?php if ($OPT['ssl']): ?>
<IfModule mod_ssl.c>
<?php endif; ?>
<VirtualHost <?php echo $OPT['ipAddress']->escapedAddress ?>:<?php echo $OPT['ssl'] ? $VAR->server->webserver->httpsPort : $VAR->server->webserver->httpPort ?> <?php echo ($VAR->server->webserver->proxyActive && $OPT['ipAddress']->isIpV6()) ? "127.0.0.1:" . ($OPT['ssl'] ? $VAR->server->webserver->httpsPort : $VAR->server->webserver->httpPort) : ''; ?>>
ServerName "<?php echo $VAR->domain->asciiName ?>"
<?php if ($VAR->domain->isWildcard): ?>
ServerAlias "<?php echo $VAR->domain->wildcardName ?>"
<?php else: ?>
ServerAlias "www.<?php echo $VAR->domain->asciiName ?>"
<?php endif; ?>
<?php if ($VAR->server->webserver->listenLocalhost): ?>
<?php if ($VAR->domain->physicalHosting->hasIpV6()): ?>
ServerAlias "ipv6.<?php echo $VAR->domain->asciiName ?>"
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->hasIpV4()): ?>
ServerAlias "ipv4.<?php echo $VAR->domain->asciiName ?>"
<?php endif; ?>
<?php else: ?>
<?php if ($OPT['ipAddress']->isIpV6()): ?>
ServerAlias "ipv6.<?php echo $VAR->domain->asciiName ?>"
<?php elseif ($OPT['ipAddress']->isIpV4()): ?>
ServerAlias "ipv4.<?php echo $VAR->domain->asciiName ?>"
<?php endif; ?>
<?php endif; ?>
<?php foreach ($VAR->domain->webAliases AS $alias): ?>
ServerAlias "<?php echo $alias->asciiName ?>"
ServerAlias "www.<?php echo $alias->asciiName ?>"
<?php if ($VAR->server->webserver->listenLocalhost): ?>
<?php if ($VAR->domain->physicalHosting->hasIpV6()): ?>
ServerAlias "ipv6.<?php echo $alias->asciiName ?>"
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->hasIpV4()): ?>
ServerAlias "ipv4.<?php echo $alias->asciiName ?>"
<?php endif; ?>
<?php else: ?>
<?php if ($OPT['ipAddress']->isIpV6()): ?>
ServerAlias "ipv6.<?php echo $alias->asciiName ?>"
<?php elseif ($OPT['ipAddress']->isIpV4()): ?>
ServerAlias "ipv4.<?php echo $alias->asciiName ?>"
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php if ($VAR->domain->previewDomainName): ?>
ServerAlias "<?php echo $VAR->domain->previewDomainName ?>"
<?php endif; ?>
<?php if ($VAR->server->webserver->listenLocalhost): ?>
<?php foreach ($VAR->domain->physicalHosting->ipAddresses as $ip): ?>
<?php if ($ip->defaultDomainId === $VAR->domain->id): ?>
ServerAlias "<?php echo $ip->defaultServerName ?>"
<?php endif; ?>
<?php endforeach; ?>
<?php endif; ?>
UseCanonicalName Off
<?php if (!$VAR->server->webserver->apache->pipelogEnabled): ?>
CustomLog <?php echo $VAR->domain->physicalHosting->logsDir ?>/<?php echo $OPT['ssl'] ? 'access_ssl_log' : 'access_log' ?> plesklog
<?php endif; ?>
ErrorLog "<?php echo $VAR->domain->physicalHosting->logsDir ?>/error_log"
<?php if ($VAR->domain->isMailAutodiscoveryEnabled): ?>
<?php echo $VAR->includeTemplate('domain/service/mailAutoConfig.php') ?>
<?php endif ?>
<?php if (!$OPT['ssl'] && $VAR->domain->physicalHosting->sslRedirect): ?>
<?php if (is_file($VAR->domain->physicalHosting->customConfigFile)): ?>
Include "<?php echo $VAR->domain->physicalHosting->customConfigFile ?>"
<?php endif; ?>
<?php echo $VAR->includeTemplate('domain/service/seoSafeRedirects.php', array('ssl' => true)); ?>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
</IfModule>
</VirtualHost>
<?php return; ?>
<?php endif; ?>
DocumentRoot "<?php echo $OPT['ssl'] ? $VAR->domain->physicalHosting->httpsDir : $VAR->domain->physicalHosting->httpDir ?>"
<IfModule mod_suexec.c>
SuexecUserGroup "<?php echo $VAR->domain->physicalHosting->login ?>" "<?php echo $VAR->server->webserver->clientGroup ?>"
</IfModule>
<?php echo $VAR->includeTemplate('domain/PCI_compliance.php') ?>
<IfModule mod_userdir.c>
<?php if (count($VAR->domain->physicalHosting->webusers)): ?>
<?php foreach (array_chunk($VAR->domain->physicalHosting->webusers, 50) AS $chunk): ?>
UserDir enabled <?php echo implode(" ", array_map(function($webuser) { return $webuser->login;}, $chunk)) ?>
<?php endforeach; ?>
<?php endif; ?>
UserDir "<?php echo $VAR->domain->physicalHosting->webUsersDir ?>/*"
</IfModule>
<?php if ($VAR->domain->physicalHosting->vhostId): ?>
<IfModule mod_sysenv.c>
SetSysEnv PP_VHOST_ID "<?php echo $VAR->domain->physicalHosting->vhostId ?>"
</IfModule>
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->cgi && !$VAR->domain->physicalHosting->rootApplication): ?>
ScriptAlias "/cgi-bin/" "<?php echo $VAR->domain->physicalHosting->cgiBinDir ?>/"
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->hasWebstat):?>
<?php if ($OPT['ssl'] || !$VAR->domain->physicalHosting->ssl): ?>
Alias "/plesk-stat" "<?php echo $VAR->domain->physicalHosting->statisticsDir ?>"
<Location /plesk-stat/>
Options +Indexes
</Location>
<Location /plesk-stat/logs/>
Require valid-user
</Location>
Alias /webstat <?php echo $VAR->domain->physicalHosting->statisticsDir ?>/webstat
Alias /webstat-ssl <?php echo $VAR->domain->physicalHosting->statisticsDir ?>/webstat-ssl
Alias /ftpstat <?php echo $VAR->domain->physicalHosting->statisticsDir ?>/ftpstat
Alias /anon_ftpstat <?php echo $VAR->domain->physicalHosting->statisticsDir ?>/anon_ftpstat
Alias /awstats-icon <?php echo $VAR->server->awstats->iconsDir ?>
<?php else: ?>
Redirect permanent /plesk-stat https://<?php echo $VAR->domain->urlName ?>/plesk-stat
Redirect permanent /webstat https://<?php echo $VAR->domain->urlName ?>/webstat
Redirect permanent /webstat-ssl https://<?php echo $VAR->domain->urlName ?>/webstat-ssl
Redirect permanent /ftpstat https://<?php echo $VAR->domain->urlName ?>/ftpstat
Redirect permanent /anon_ftpstat https://<?php echo $VAR->domain->urlName ?>/anon_ftpstat
Redirect permanent /awstats-icon https://<?php echo $VAR->domain->urlName ?>/awstats-icon
<?php endif; ?>
<?php endif; ?>
<?php if ($OPT['ssl']): ?>
<?php $sslCertificate = $VAR->server->sni && $VAR->domain->physicalHosting->sslCertificate ?
$VAR->domain->physicalHosting->sslCertificate :
$OPT['ipAddress']->sslCertificate; ?>
<?php if ($sslCertificate->ceFilePath): ?>
SSLEngine on
SSLVerifyClient none
SSLCertificateFile <?php echo $sslCertificate->ceFilePath ?>
<?php if ($sslCertificate->caFilePath): ?>
SSLCACertificateFile <?php echo $sslCertificate->caFilePath ?>
<?php endif; ?>
<?php endif; ?>
<?php else: ?>
<IfModule mod_ssl.c>
SSLEngine off
</IfModule>
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->php && $VAR->domain->physicalHosting->phpHandlerType == 'cgi'): ?>
SetEnv PP_CUSTOM_PHP_INI <?php echo $VAR->domain->physicalHosting->vhostSystemDir ?>/etc/php.ini
SetEnv PP_CUSTOM_PHP_CGI_INDEX <?php echo $VAR->domain->physicalHosting->phpHandlerId ?>
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->php && $VAR->domain->physicalHosting->phpHandlerType == 'fastcgi'): ?>
<IfModule mod_fcgid.c>
FcgidInitialEnv PP_CUSTOM_PHP_INI <?php echo $VAR->domain->physicalHosting->vhostSystemDir ?>/etc/php.ini
FcgidInitialEnv PP_CUSTOM_PHP_CGI_INDEX <?php echo $VAR->domain->physicalHosting->phpHandlerId ?>
FcgidMaxRequestLen 134217728
<?php if ($VAR->domain->physicalHosting->scriptTimeout): ?>
FcgidIOTimeout <?php echo $VAR->domain->physicalHosting->scriptTimeout; ?>
<?php endif; ?>
</IfModule>
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->scriptTimeout): ?>
TimeOut <?php echo $VAR->domain->physicalHosting->scriptTimeout; ?>
<?php endif; ?>
<Directory <?php echo $OPT['ssl'] ? $VAR->domain->physicalHosting->httpsDir : $VAR->domain->physicalHosting->httpDir ?>>
<?php
if ($VAR->domain->physicalHosting->perl) {
echo $VAR->includeTemplate('service/mod_perl.php');
}
if (
!$VAR->domain->physicalHosting->php ||
!in_array($VAR->domain->physicalHosting->phpHandlerType, array('cgi', 'fastcgi', 'fpm'))
) {
echo $VAR->includeTemplate('service/php.php', array(
'enabled' => $VAR->domain->physicalHosting->php,
'safe_mode' => $VAR->domain->physicalHosting->phpSafeMode,
'dir' => $OPT['ssl'] ? $VAR->domain->physicalHosting->httpsDir : $VAR->domain->physicalHosting->httpDir,
'settings' => $VAR->domain->physicalHosting->phpSettings,
));
}
if ($VAR->domain->physicalHosting->python) {
echo $VAR->includeTemplate('service/mod_python.php');
}
if ($VAR->domain->physicalHosting->fastcgi) {
echo $VAR->includeTemplate('service/mod_fastcgi.php');
}
if ($VAR->domain->physicalHosting->php && 'cgi' == $VAR->domain->physicalHosting->phpHandlerType) {
echo $VAR->includeTemplate('service/php_over_cgi.php');
}
if ($VAR->domain->physicalHosting->php && 'fastcgi' == $VAR->domain->physicalHosting->phpHandlerType) {
echo $VAR->includeTemplate('service/php_over_fastcgi.php');
}
if ($VAR->domain->physicalHosting->php && 'fpm' == $VAR->domain->physicalHosting->phpHandlerType) {
echo $VAR->includeTemplate('service/php_over_fpm.php');
}
?>
<?php if ($OPT['ssl']): ?>
SSLRequireSSL
<?php endif; ?>
Options <?php echo $VAR->domain->physicalHosting->ssi ? '+' : '-' ?>Includes <?php echo $VAR->domain->physicalHosting->cgi ? '+' : '-' ?>ExecCGI
</Directory>
<?php if ($VAR->domain->physicalHosting->webusersScriptingEnabled): ?>
<?php foreach ($VAR->domain->physicalHosting->webusers as $webuser): ?>
<Directory <?php echo $webuser->dir ?>>
Options <?php echo $VAR->domain->physicalHosting->ssi && $webuser->ssi ? '+' : '-' ?>Includes <?php echo $VAR->domain->physicalHosting->cgi && $webuser->cgi ? '+' : '-' ?>ExecCGI
<?php if ($VAR->domain->physicalHosting->cgi && $webuser->cgi): ?>
AddHandler cgi-script .cgi
<?php endif; ?>
<?php
if ($VAR->domain->physicalHosting->perl && $webuser->perl) {
echo $VAR->includeTemplate('service/mod_perl.php');
}
if (
!$VAR->domain->physicalHosting->php ||
!in_array($VAR->domain->physicalHosting->phpHandlerType, array('cgi', 'fastcgi', 'fpm'))
) {
echo $VAR->includeTemplate('service/php.php', array(
'enabled' => $VAR->domain->physicalHosting->php && $webuser->php,
'safe_mode' => $VAR->domain->physicalHosting->phpSafeMode,
'dir' => $webuser->dir,
'settings' => $webuser->phpSettings,
));
}
if ($VAR->domain->physicalHosting->php && $webuser->php && 'cgi' == $VAR->domain->physicalHosting->phpHandlerType) {
echo $VAR->includeTemplate('service/php_over_cgi.php');
}
if ($VAR->domain->physicalHosting->php && $webuser->php && 'fastcgi' == $VAR->domain->physicalHosting->phpHandlerType) {
echo $VAR->includeTemplate('service/php_over_fastcgi.php');
}
if ($VAR->domain->physicalHosting->php && $webuser->php && 'fpm' == $VAR->domain->physicalHosting->phpHandlerType) {
echo $VAR->includeTemplate('service/php_over_fpm.php');
}
if ($VAR->domain->physicalHosting->python && $webuser->python) {
echo $VAR->includeTemplate('service/mod_python.php');
}
if ($VAR->domain->physicalHosting->fastcgi && $webuser->fastcgi) {
echo $VAR->includeTemplate('service/mod_fastcgi.php');
}
?>
</Directory>
<?php endforeach; ?>
<?php else: ?>
<Directory <?php echo $VAR->domain->physicalHosting->webUsersDir ?>>
<?php echo $VAR->includeTemplate('service/php.php', array(
'enabled' => false,
'safe_mode' => true,
'dir' => $VAR->domain->physicalHosting->webUsersDir,
'settings' => $VAR->domain->physicalHosting->phpSettings,
)); ?>
</Directory>
<?php endif; ?>
<?php if (!$VAR->domain->physicalHosting->isMainDomain): ?>
<Directory <?php echo $VAR->domain->physicalHosting->vhostDir ?>>
Options +FollowSymLinks
</Directory>
<?php endif ?>
<?php
echo $VAR->includeTemplate('domain/service/protectedDirectories.php', $OPT) . "\n";
if ($VAR->domain->physicalHosting->errordocs) {
echo $VAR->includeTemplate('domain/service/errordocs.php') . "\n";
}
?>
<?php if (is_dir($OPT['ssl'] ? $VAR->domain->physicalHosting->siteAppsSslConfigDir : $VAR->domain->physicalHosting->siteAppsConfigDir)): ?>
<?php echo $VAR->server->webserver->includeOptionalConfig(($OPT['ssl'] ? $VAR->domain->physicalHosting->siteAppsSslConfigDir : $VAR->domain->physicalHosting->siteAppsConfigDir) . '/*.conf') ?>
<?php endif; ?>
<?php echo $VAR->domain->physicalHosting->apacheSettings ?>
<?php if ($VAR->domain->physicalHosting->directoryIndex): ?>
DirectoryIndex <?=$VAR->quote($VAR->domain->physicalHosting->directoryIndex)?>
<?php endif ?>
<?php echo $VAR->includeTemplate('domain/service/seoSafeRedirects.php', array('ssl' => $OPT['ssl'])); ?>
<?php if ($VAR->domain->suspended): ?>
<?php echo $VAR->includeTemplate('domain/service/suspend.php'); ?>
<?php endif; ?>
<?php if (is_file($OPT['ssl'] ? $VAR->domain->physicalHosting->customSslConfigFile : $VAR->domain->physicalHosting->customConfigFile)): ?>
Include "<?php echo $OPT['ssl'] ? $VAR->domain->physicalHosting->customSslConfigFile : $VAR->domain->physicalHosting->customConfigFile ?>"
<?php endif; ?>
<?php if ($VAR->domain->physicalHosting->apacheWebAppFirewallSettings): ?>
<IfModule mod_security2.c>
<?php echo $VAR->domain->physicalHosting->apacheWebAppFirewallSettings ?>
</IfModule>
<?php endif ?>
<Directory <?php echo $VAR->webspace->vhostDir ?>>
<?php if ($VAR->domain->physicalHosting->restrictFollowSymLinks): ?>
Options -FollowSymLinks
<?php endif ?>
<?php
$allowOverrideOptions = ['Indexes', 'SymLinksIfOwnerMatch', 'MultiViews'];
if (!$VAR->domain->physicalHosting->restrictFollowSymLinks) {
$allowOverrideOptions[] = 'FollowSymLinks';
}
if ($VAR->domain->physicalHosting->cgi || $VAR->server->webserver->apache->allowOverrideExecCGI) {
$allowOverrideOptions[] = 'ExecCGI';
}
if ($VAR->domain->physicalHosting->ssi || $VAR->server->webserver->apache->allowOverrideIncludes) {
$allowOverrideOptions[] = 'Includes';
$allowOverrideOptions[] = 'IncludesNOEXEC';
}
?>
AllowOverride AuthConfig FileInfo Indexes Limit Options=<?=implode(',', $allowOverrideOptions)?>
</Directory>
<?php if (!$VAR->server->webserver->proxyActive): ?>
<?php if ($VAR->domain->physicalHosting->expires): ?>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus <?=$VAR->escape($VAR->domain->physicalHosting->expires)?> seconds"
</IfModule>
<?php endif ?>
<IfModule mod_headers.c>
<?php foreach ((array)$VAR->domain->physicalHosting->headers as list($name, $value)): ?>
Header add <?=$VAR->quote([$name, $value])?>
<?php endforeach ?>
</IfModule>
<?php endif ?>
<?=$VAR->domain->physicalHosting->extensionsConfigs?>
</VirtualHost>
<?php if ($OPT['ssl']): ?>
</IfModule>
<?php endif ?>