Назад | Перейти на главную страницу

Nginx обращается к приложению Nodejs

Я использую веб-сервер Ubuntu с Plesk 11.5.x. Я добавил 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's .../system/domain.tld/conf/vhost_nginx.conf являются вышестоящими, а серверные команды не допускаются. И location / тоже невозможно.


Думаю, мне понадобится что-то вроде /etc/nginx/sites-available/domain.tld. Я понятия не имею, куда это добавить, не нарушив plesk или не перезаписав мою конфигурацию при автоматической перенастройке plesk.

Любые идеи?

Вы можете редактировать файл шаблона 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); ?>
     }

Я предлагаю параметризовать это условие, чтобы сделать его более гибким.