Nginx 解决 Nodejs 应用程序问题

Nginx 解决 Nodejs 应用程序问题

我正在使用带有 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); ?>
     }

我建议将此条件参数化,以更加灵活

相关内容