diff --git a/README.ru.md b/README.ru.md index 69c603b..9d0d21e 100644 --- a/README.ru.md +++ b/README.ru.md @@ -2,21 +2,21 @@ ## Описание -Плагин для ispmanager дляя поддержки [mod_rewrite](https://github.com/bayrepo/ngx_http_apache_rewrite_module) +Плагин для ispmanager для поддержки [mod_rewrite](https://github.com/bayrepo/ngx_http_apache_rewrite_module) ## Поддерживаемые ОС - AlmaLinux 9/10 - CentOS Stream 9/10 -- и подбные RedHat подобные операционные системы +- и подобные операционные системы на базе RedHat ## Описание работы -Плагин при установке пытается определить установленный nginx и его версию, скачивает необходимые пакеты и исходные коды модуля для nginx, собирает модуль и подкладывает собранные so файл, к модулям nginx. +Плагин при установке пытается определить установленный nginx и его версию, скачивает необходимые пакеты и исходные коды модуля для nginx, собирает модуль и подготавливает собранный .so файл, размещая его в каталоге модулей nginx. -Далее в UI ispmanager можно активировать модуль и подключить для нужных сайтов. +Далее в UI ispmanager можно активировать модуль и подключить его для нужных сайтов. -В пакете установлен хук, которые отслеживает версию nginx пакета и при обнолвлении пересобирает модуль. +В пакете установлен хук, который отслеживает версию пакета nginx и при обновлении пересобирает модуль. ## Логи @@ -27,16 +27,16 @@ ## Сборка пакета -Для сборки пакета требуется наличие docker в ОС, более ничего не нужно. -Для сборки пакета rpm плагина для ispmanager, необходимо выполнить следующую команду: +Для сборки пакета требуется наличие Docker в ОС, и больше ничего не нужно. +Для сборки пакета RPM плагина для ispmanager необходимо выполнить следующую команду: ``` bash build_package.sh almalinux:9 ``` -Где almalinux:9 - это может быть любой образ rpm-based ОС. +Где almalinux:9 – это может быть любой образ RPM‑based ОС. -Если сборка прошла успешно, в каталоге _packages появятся rpm файлы, пример таких файлов: +Если сборка прошла успешно, в каталоге _packages появятся rpm‑файлы, пример таких файлов: ``` _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.src.rpm @@ -47,9 +47,9 @@ _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.x86_64.rpm ## Установка и описание настроек -Для установки, необходимо установить пакет `ispmanager-plugin-nginx_mod_rewrite_plugin` на машине с уставновленным ispmanager. ispmanager должен быть сконфигурирован поддерживать nginx. Во время установки будут доустановлены, некоторые пакеты. +Для установки необходимо установить пакет `ispmanager-plugin-nginx_mod_rewrite_plugin` на машине с установленным ispmanager. ispmanager должен быть сконфигурирован для поддержки nginx. Во время установки будут установлены некоторые пакеты. -Список пакетов, которые будут достановлены: +Список пакетов, которые будут установлены: - openssl-devel - pcre-devel @@ -60,9 +60,9 @@ _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.x86_64.rpm - wget - python3 -Т.к nginx требует сборки любого модуля именно с текущей версией, поэтому модуль собирается именно при установке, детектится версия nginx и под нее происходит сборка. +Т.к. nginx требует сборки любого модуля именно с текущей версией, модуль собирается при установке, определяя версию nginx и подстраивая сборку. -Если же nginx обновляется, то при установке добавляется хук, который при обновлении nginx пересобирает под новый nginx модуль. +Если же nginx обновляется, при установке добавляется хук, который при обновлении nginx пересобирает модуль для новой версии. Для установки нужно установить собранный в предыдущем пункте пакет: @@ -70,40 +70,45 @@ _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.x86_64.rpm sudo dnf install _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.x86_64.rpm ``` -Если вдруг установка провалилась, лог установки можно изучить здесь - `/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log` +Если установка провалилась, лог можно изучить здесь – `/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log`. -Если все прошло успешно, то необходимо перейти в раздел "Модули": +Если всё прошло успешно, перейдите в раздел «Модули»: ![Модули](img/isp_mod_rewrite1.png) -Найти модуль с названием "Модуль nginx mod_rewrite" и нажать на значек настройки модуля. На изображении выше обведены синим контуром. +Найдите модуль «Модуль nginx mod_rewrite» и нажмите значок настройки. На изображении выше он обведён синим контуром. Далее откроется окно сборки модуля: ![Сборка](img/isp_mod_rewrite2.png) -Для отмены сборки, нажмите кнопку "Отменить сборку". Для сборки и установки хука пересборки при обновлении nginx необходимо нажать "Собать модуль и установить хук на пересборку". +Для отмены сборки нажмите кнопку «Отменить сборку». Для сборки и установки хука на пересборку при обновлении nginx нажмите «Собрать модуль и установить хук на пересборку». -Процесс сборки можно будет изучить в логе: `/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log. +Процесс сборки можно изучить в логе: `/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log`. -Если сборка прошла успешно, то в на сервере появится файл: +Если сборка прошла успешно, на сервере появятся файлы: ``` # cat /usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf load_module "/usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so"; ``` -и файл: - +и ``` /usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so ``` -соответсвенно. +соответственно. -Далее нужно перейти в глобальные настройки модуля: +Если нужна внеплановая пересборка модуля, её можно запустить вручную командой: + +``` +sudo /usr/local/ispmanager-mod_rewrite/utils/build_mod_rewrite.py +``` + +Далее перейдите в глобальные настройки модуля: ![Глобальные настройки модуля](img/isp_mod_rewrite3.png) -Для этого как показано на изображении нужно перети во "Все разделы" и далее найти раздел "mod_rewrite для nginx" и его пункт меню "Настройка модуля nginx". +Для этого, как показано на изображении, нужно перейти в раздел «Все разделы» и далее найти раздел «mod_rewrite для nginx» и его пункт меню «Настройка модуля nginx». Откроется следующее окно настроек: @@ -111,12 +116,82 @@ load_module "/usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so"; Где: -- Добавить модуль nginx - галочка позволяет отключить модуль nginx глобально, т.е в файле `/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf` закомментируется строка подгрузки модуля. Здесь нужно быть осторожным, если есть хоть один сайт с опцией, которую приносит модуль, то nginx будет ругаться на неизвестную опцию и не сможет запуститься. Поэтому прежде чем отключать, необходимо отключить на всех сайтах опции mod_rewrite для nginx. -- Использовать шаблон для настройки сайта - текущий плагин, позволяет двумя способами встроиться в конфигурацию сайта. Вариант 1 - глобальное включение mod_rewrite для сайта(есои галочка не включена), Вариант 2 - включение mod_rewrite для location через шаблон ispmanager (если галочка включена). О каждом варианте настроек будет расказоно ниже. -- Включить вывод дополнительной информации в лог - если галочка включена, то в лог файл `/usr/local/mgr5/var/nginx-mod-rewrite-plugin-addon.log` записывается детальная работа самого плагина ispmanager. Может понадобиться если плагин некорректно работает. В общих лучаях данная галочка должна быть отключена. +- **Добавить модуль nginx** – галочка позволяет отключить модуль nginx глобально, то есть в файле `/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf` закомментируется строка загрузки модуля. Здесь нужно быть осторожным: если есть хоть один сайт с опцией, которую предоставляет модуль, то nginx будет ругаться на неизвестную опцию и не сможет запуститься. Поэтому прежде чем отключать, необходимо отключить на всех сайтах опции mod_rewrite для nginx. -Включить же mod_rewrite для сайта можно через меню "Сайты": +- **Использовать шаблон для настройки сайта** – текущий плагин позволяет двумя способами встроиться в конфигурацию сайта: + **Вариант 1** – глобальное включение mod_rewrite для сайта (если галочка не включена). + **Вариант 2** – включение mod_rewrite для location через шаблон ispmanager (если галочка включена). О каждом варианте настроек будет рассказано ниже. + +- **Включить вывод дополнительной информации в лог** – если галочка включена, то в лог `/usr/local/mgr5/var/nginx-mod-rewrite-plugin-addon.log` записывается детальная работа самого плагина ispmanager. Может понадобиться, если плагин работает некорректно. В большинстве случаев данная галочка должна быть отключена. + +Включить mod_rewrite для сайта можно через меню «Сайты»: ![Включение для сайта](img/isp_mod_rewrite5.png) -В меню выбрать интересующий сайт и включить галочку "Включить для сайта поддержку mod_rewrite для nginx". И сохранить. +В меню выберите интересующий сайт, включите галочку «Включить для сайта поддержку mod_rewrite для nginx» и сохраните. +С этого момента модуль будет обрабатывать .htaccess и правила mod_rewrite. + +Предупреждение! Прошу заметить, что директивы `` и директивы, не относящиеся к mod_rewrite, пропускаются. + +**Вариант 1 – глобальное включение mod_rewrite для сайта (если галочка не включена)** + +В данном варианте настроек создаётся персональный файл конфигурации для пользователя `/etc/nginx/vhosts-resources/userX.domain/mod_rewrite.conf`: + +``` +# cat /etc/nginx/vhosts-resources/userX.domain/mod_rewrite.conf +GlobalLocationRewriteEngine on; +HtaccessEnable on; +``` + +Он подключается через стандартные настройки для виртуального хоста ispmanager: + +``` +cat /etc/nginx/vhosts/userX/userX.domain.conf +server { + server_name domain; + charset off; + ... + include /etc/nginx/vhosts-resources/userX.domain/*.conf; + include /etc/nginx/users-resources/userX/*.conf; + ... +} +``` + +Данный файл настраивает для виртуального хоста перенаправление всех запросов через mod_rewrite. + +**Вариант 2 – включение mod_rewrite для location через шаблон ispmanager (если галочка включена)** + +В данном варианте настроек используется шаблонизация ispmanager. + +С помощью патчей из каталога `/usr/local/ispmanager-mod_rewrite/patches` создаются модифицированные шаблоны для виртуального хоста: + +``` +/usr/local/mgr5/etc/templates/nginx-vhosts-ssl.template +/usr/local/mgr5/etc/templates/nginx-vhosts.template +``` + +Которыми контрольная панель заменяет шаблоны по умолчанию и при включении галочки «Включить для сайта поддержку mod_rewrite для nginx» для сайта генерируется следующий конфигурационный файл: + +``` +# cat /etc/nginx/vhosts/userX/userX.domain.conf +server { + server_name domain; + ... + location / { + ... + RewriteEngine on; + } + location @php { + ... + RewriteEngine on; + } + ... + HtaccessEnable on; +} +``` + +Такой подход позволяет более точно расставлять обработку правил для разных локаций, а также исключать некоторые из них. + +**Дополнительные рекомендации** + +При включённом mod_rewrite для nginx рекомендуется отключить для сайта опцию «Включить обработку ЧПУ», так как она берёт на себя функции mod_rewrite. diff --git a/img/isp_mod_rewrite5.png b/img/isp_mod_rewrite5.png index 5f5b74f..5b86fa3 100644 Binary files a/img/isp_mod_rewrite5.png and b/img/isp_mod_rewrite5.png differ diff --git a/ispmanager-plugin-nginx_mod_rewrite_plugin.spec b/ispmanager-plugin-nginx_mod_rewrite_plugin.spec index 033f2ca..1182759 100644 --- a/ispmanager-plugin-nginx_mod_rewrite_plugin.spec +++ b/ispmanager-plugin-nginx_mod_rewrite_plugin.spec @@ -45,7 +45,7 @@ fi killall core %postun -if [ "$1" == "1" ]; then +if [ "$1" == "0" ]; then killall core if [ -e /usr/local/ispmanager-mod_rewrite/settings ]; then rm -f /usr/local/ispmanager-mod_rewrite/settings/*