Задать вопрос
vshemarov
@vshemarov

Как настроить nginx в Plesk для конкретного домена?

Дано - хостинг с панелью Plesk 11.5, на сервере крутится apache и nginx в качестве фронтенд-сервера. По умолчанию nginx стандартно перенаправляет запросы апачу.

Но возникла необходимость на одном конкретном домене изменить настройки nginx так, чтоб не апачу шли запросы, а другому сервису. Как это прописать в конфиг-файле - не вопрос, тут все ясно. Вопрос в том, как сделать, чтоб этот конфиг-файл подхватывался nginx'ом. В Плеске конфиг-файлы генерятся автоматом при любых изменениях, поэтому вносить туда нужные записи - не вариант. Отказываться от Плеск - этот сценарий тоже не рассматривается. Саппорт потыркался и опустил руки. Курение мануалов результата не дало.

Последняя надежда - коллективный разум. Неужели в подобной ситуации нет никакой возможности добавлять в автогенерируемые конфиг-файлы свои настройки для nginx для конкретного домена?
  • Вопрос задан
  • 3828 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
vshemarov
@vshemarov Автор вопроса
В общем, вдруг кому пригодится: это можно, но с определенными ограничениями.

1. Сначала создается через Plesk нужный домен.
2. В /var/www/vhosts/system/[domain_name]/conf/vhost_nginx.conf пишется нужный конфиг.
3. Перестраиваются конфиги домена вызовом командной строки:
/usr/local/psa/admin/sbin/httpdmng --reconfigure-domain [domain_name]

И в дальнейшем, если есть файл vhost_nginx.conf, то он будет инклудится в конфиг домена.

Теперь об ограничениях:
1. Файл vhost_nginx.conf инклудится внутрь секции server { ... }, в самом ее конце, что и накладывает свои ограничения. Например, добавить свою секцию location / { ... } не получится, т.к. она там уже есть (Plesk заботливо воткнул), но location = / { ... } - можно.

2. По умолчанию один и тот же файл vhost_nginx.conf инклудится как для https, так и для http, в некоторых случаях это может быть важно.

В принципе, можно полностью контролировать создание и перегенерацию всех конфигов (как для nginx, так и для apache), но для этого надо уже править скрипты, которые этим занимаются (система допускает использование кастомных скриптов для этих целей). Подробнее здесь:

download1.parallels.com/Plesk/PP11/11.5/Doc/en-US/...

Надеюсь, инфа сэкономит кому-то время и нервы.
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
нгинкс делает инклуд , в него добавить конфиг для домена нужного
Ответ написан
@germani
Мое решение данной ситуации - может еще кому пол дня может спасти =)
инфа первоначально взята тут

что делал;
1 mkdir /usr/local/psa/admin/conf/templates/custom/domain

2 cp /usr/local/psa/admin/conf/templates/default/domain/nginxDomainVirtualHost.php /usr/local/psa/admin/conf/templates/custom/domain/

3 создаем папку conf в ней наши конциагурации http и https
nginx.ssl.conf - подключается первым
nginx.conf

4 правим новый nginxDomainVirtualHost.php

и так вырезка из nginxDomainVirtualHost.php

перед server {

будет так

<?php $file = $VAR->domain->physicalHosting->vhostDir . '/conf/nginx.' . ($OPT['ssl'] ? 'ssl.' : '') . 'conf'; ?>
<?php $file_exists = file_exists( $file ); ?>

<?php if ( !$file_exists ){ ?>
server {

и в самом конце после
}

будет так

}
<?php } else { ?>

include <?php echo $file; ?>;

<?php } ?>


и далее можем делать свою конфигурацию сервера, я делал для перенаправления websocket

если что можно и нужно исправить напишите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы