我正在使用带有 Plesk 11.5.x 的 Ubuntu Web 服务器。我已经添加了 Nodejs,现在我想使用子域名来处理 Nodejs 应用程序。
网站:domain.tld
Nodejs应用程序:app.domain.tld
目前正在进行:domain.tld:2368
,但我想借助子域来隐藏端口。
我应该能够执行以下操作:
upstream app_myApp {
server 127.0.0.1:2368;
}
server {
listen 0.0.0.0:80;
server_name app.domain.tld;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://app_myApp/;
proxy_redirect off;
}
}
我的问题是要把它放在哪里,因为我正在使用 Plesk。在 Plesk 11.5 中.../system/domain.tld/conf/vhost_nginx.conf
不允许使用上游和服务器命令。而且location /
也不可能。
我想我需要类似的东西/etc/nginx/sites-available/domain.tld
。我不知道在哪里添加它而不破坏 plesk 或我的配置在自动 plesk 重新配置中被覆盖。
有任何想法吗?
答案1
您可以编辑 nginx 模板文件
mkdir /usr/local/psa/admin/conf/templates/custom/domain
cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain
在新文件 /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php 中找到以下行:
location / {
<?php echo $VAR->includeTemplate('domain/service/proxy.php', $OPT); ?>
}
并根据您的需要进行调整:
location / {
<?php if ('mydomain.tld' == $VAR->domain->asciiName ) {
echo $VAR->includeTemplate('PATHTONODECONFIG.php', $OPT); ?>
} else {
echo $VAR->includeTemplate('domain/service/proxy.php', $OPT); ?>
}
我建议将此条件参数化,以更加灵活