如何在Plesk上为特定域创建nginx自定义模板?
我知道plesk允许我们在文件夹如何在Plesk上为特定域创建nginx自定义模板?,nginx,reverse-proxy,plesk,Nginx,Reverse Proxy,Plesk,我知道plesk允许我们在文件夹/usr/local/psa/admin/conf/templates/custom下创建自定义Nginx和Apache模板,但plesk没有提供任何选项来指定每个域的自定义模板 我有一个nodeJs应用程序在端口3001上运行,WebSocket在端口3002上运行,所以我需要为这两种情况配置一个特定的反向代理 如果域是a.domain.com,我需要代理将流量转发到3001端口。 如果域是b.domain.com,我需要代理将流量转发到3002端口 除此之外
/usr/local/psa/admin/conf/templates/custom
下创建自定义Nginx和Apache模板,但plesk没有提供任何选项来指定每个域的自定义模板
我有一个nodeJs应用程序在端口3001上运行,WebSocket在端口3002上运行,所以我需要为这两种情况配置一个特定的反向代理
如果域是a.domain.com,我需要代理将流量转发到3001端口。
如果域是b.domain.com,我需要代理将流量转发到3002端口
除此之外,apache端口的常见行为
有没有办法做到这一点?我解决了这个问题,在plesk自定义模板上添加了一些逻辑 首先,在/usr/local/psa/admin/conf/templates上创建一个新文件夹custom/
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