Я использую веб-сервер 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); ?>
}
Я предлагаю параметризовать это условие, чтобы сделать его более гибким.