Я решил этот случай, добавив несколько фрагментов логики c в пользовательский шаблон plesk.
Сначала создайте новую папку custom в / usr / local / psa / admin / conf / templates /
mkdir -p /usr/local/psa/admin/conf/templates/custom/domain/service/
Затем создайте файл со следующим кодом:
vim /usr/local/psa/admin/conf/templates/custom/domain/service/proxy.php
<?php
/**
* @var Template_VariableAccessor $VAR
* @var array $OPT
*/
?>
<?php
$port = $OPT['backendPort'];
if($VAR->domain->asciiName == 'a.domain.com') {
$port = '3001';
}
else if ($VAR->domain->asciiName == 'b.domain.com') {
$port = '3002';
}
?>
<?php if ($OPT['ssl'] && ($port == 3002 || $port == 3001)): ?>
proxy_pass http://<?php echo $OPT['ipAddress']->proxyEscapedAddress . ':' . $port ?>;
<?php elseif ($OPT['ssl'] && ($port != 3002 && $port != 3001)): ?>
proxy_pass https://<?php echo $OPT['ipAddress']->proxyEscapedAddress . ':' . $port ?>;
<?php else: ?>
proxy_pass http://<?php echo $OPT['ipAddress']->proxyEscapedAddress . ':' . $port ?>;
<?php endif ?>
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
<?php if (empty($OPT['nginxTransparentMode']) && !$VAR->domain->physicalHosting->proxySettings['nginxTransparentMode'] && !$VAR->domain->physicalHosting->proxySettings['nginxServeStatic']): ?>
proxy_set_header X-Accel-Internal /internal-nginx-static-location;
<?php endif ?>
access_log off;
<?php if ($OPT['nginxCacheEnabled'] ?? true): ?>
<?=$VAR->includeTemplate('domain/service/nginxCacheProxy.php', $OPT)?>
<?php endif ?>
Теперь просто Остальное, чтобы запустить сценарии перенастройки:
/usr/local/psa/admin/bin/httpdmng --reconfigure-domain a.domain.com
/usr/local/psa/admin/bin/httpdmng --reconfigure-domain b.domain.com