Files
ispmanager-mod_rewrite/README.ru.md

198 lines
11 KiB
Markdown
Raw Normal View History

2026-07-16 00:47:02 +03:00
# ispmanager-mod_rewrite
## Описание
2026-07-21 23:21:53 +03:00
Плагин для ispmanager для поддержки [mod_rewrite](https://github.com/bayrepo/ngx_http_apache_rewrite_module)
2026-07-16 00:47:02 +03:00
## Поддерживаемые ОС
- AlmaLinux 9/10
- CentOS Stream 9/10
2026-07-21 23:21:53 +03:00
- и подобные операционные системы на базе RedHat
2026-07-16 00:47:02 +03:00
## Описание работы
2026-07-21 23:21:53 +03:00
Плагин при установке пытается определить установленный nginx и его версию, скачивает необходимые пакеты и исходные коды модуля для nginx, собирает модуль и подготавливает собранный .so файл, размещая его в каталоге модулей nginx.
2026-07-16 00:47:02 +03:00
2026-07-21 23:21:53 +03:00
Далее в UI ispmanager можно активировать модуль и подключить его для нужных сайтов.
2026-07-16 00:47:02 +03:00
2026-07-21 23:21:53 +03:00
В пакете установлен хук, который отслеживает версию пакета nginx и при обновлении пересобирает модуль.
2026-07-16 00:47:02 +03:00
## Логи
Файлы логов работы плагина и сборки можно найти по пути:
- /usr/local/mgr5/var/nginx-mod-rewrite-plugin-addon.log
- /usr/local/mgr5/var/nginx-mod-rewrite-plugin.log
## Сборка пакета
2026-07-18 18:22:17 +03:00
2026-07-21 23:21:53 +03:00
Для сборки пакета требуется наличие Docker в ОС, и больше ничего не нужно.
Для сборки пакета RPM плагина для ispmanager необходимо выполнить следующую команду:
2026-07-18 18:22:17 +03:00
```
bash build_package.sh almalinux:9
```
2026-07-21 23:21:53 +03:00
Где almalinux:9 это может быть любой образ RPMbased ОС.
2026-07-18 18:22:17 +03:00
2026-07-21 23:21:53 +03:00
Если сборка прошла успешно, в каталоге _packages появятся rpmфайлы, пример таких файлов:
2026-07-18 18:22:17 +03:00
```
_packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.src.rpm
_packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.x86_64.rpm
```
На этом сборка окончена.
## Установка и описание настроек
2026-07-21 23:21:53 +03:00
Для установки необходимо установить пакет `ispmanager-plugin-nginx_mod_rewrite_plugin` на машине с установленным ispmanager. ispmanager должен быть сконфигурирован для поддержки nginx. Во время установки будут установлены некоторые пакеты.
2026-07-18 18:22:17 +03:00
2026-07-21 23:21:53 +03:00
Список пакетов, которые будут установлены:
2026-07-18 18:22:17 +03:00
- openssl-devel
- pcre-devel
- zlib-devel
- gcc
- gcc-c++
- make
- wget
- python3
2026-07-21 23:21:53 +03:00
Т.к. nginx требует сборки любого модуля именно с текущей версией, модуль собирается при установке, определяя версию nginx и подстраивая сборку.
2026-07-18 18:22:17 +03:00
2026-07-21 23:21:53 +03:00
Если же nginx обновляется, при установке добавляется хук, который при обновлении nginx пересобирает модуль для новой версии.
2026-07-18 18:22:17 +03:00
Для установки нужно установить собранный в предыдущем пункте пакет:
```
2026-07-19 01:18:52 +03:00
sudo dnf install _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el9.x86_64.rpm
2026-07-18 18:22:17 +03:00
```
2026-07-21 23:21:53 +03:00
Если установка провалилась, лог можно изучить здесь `/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log`.
2026-07-18 18:22:17 +03:00
2026-07-21 23:21:53 +03:00
Если всё прошло успешно, перейдите в раздел «Модули»:
2026-07-20 01:00:35 +03:00
![Модули](img/isp_mod_rewrite1.png)
2026-07-21 23:21:53 +03:00
Найдите модуль «Модуль nginx mod_rewrite» и нажмите значок настройки. На изображении выше он обведён синим контуром.
2026-07-20 01:00:35 +03:00
Далее откроется окно сборки модуля:
![Сборка](img/isp_mod_rewrite2.png)
2026-07-21 23:21:53 +03:00
Для отмены сборки нажмите кнопку «Отменить сборку». Для сборки и установки хука на пересборку при обновлении nginx нажмите «Собрать модуль и установить хук на пересборку».
2026-07-20 01:00:35 +03:00
2026-07-21 23:21:53 +03:00
Процесс сборки можно изучить в логе: `/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log`.
2026-07-21 00:50:05 +03:00
2026-07-21 23:21:53 +03:00
Если сборка прошла успешно, на сервере появятся файлы:
2026-07-21 00:50:05 +03:00
```
# cat /usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf
load_module "/usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so";
```
2026-07-21 23:21:53 +03:00
и
2026-07-21 00:50:05 +03:00
```
/usr/lib64/nginx/modules/ngx_http_apache_rewrite_module.so
```
2026-07-21 23:21:53 +03:00
соответственно.
Если нужна внеплановая пересборка модуля, её можно запустить вручную командой:
```
sudo /usr/local/ispmanager-mod_rewrite/utils/build_mod_rewrite.py
```
2026-07-21 00:50:05 +03:00
2026-07-21 23:21:53 +03:00
Далее перейдите в глобальные настройки модуля:
2026-07-21 00:50:05 +03:00
![Глобальные настройки модуля](img/isp_mod_rewrite3.png)
2026-07-21 23:21:53 +03:00
Для этого, как показано на изображении, нужно перейти в раздел «Все разделы» и далее найти раздел «mod_rewrite для nginx» и его пункт меню «Настройка модуля nginx».
2026-07-21 00:50:05 +03:00
Откроется следующее окно настроек:
![Настройки](img/isp_mod_rewrite4.png)
Где:
2026-07-21 23:21:53 +03:00
- **Добавить модуль nginx** галочка позволяет отключить модуль nginx глобально, то есть в файле `/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf` закомментируется строка загрузки модуля. Здесь нужно быть осторожным: если есть хоть один сайт с опцией, которую предоставляет модуль, то nginx будет ругаться на неизвестную опцию и не сможет запуститься. Поэтому прежде чем отключать, необходимо отключить на всех сайтах опции mod_rewrite для nginx.
- **Использовать шаблон для настройки сайта** текущий плагин позволяет двумя способами встроиться в конфигурацию сайта:
**Вариант1** глобальное включение mod_rewrite для сайта (если галочка не включена).
**Вариант2** включение mod_rewrite для location через шаблон ispmanager (если галочка включена). О каждом варианте настроек будет рассказано ниже.
2026-07-21 00:50:05 +03:00
2026-07-21 23:21:53 +03:00
- **Включить вывод дополнительной информации в лог** если галочка включена, то в лог `/usr/local/mgr5/var/nginx-mod-rewrite-plugin-addon.log` записывается детальная работа самого плагина ispmanager. Может понадобиться, если плагин работает некорректно. В большинстве случаев данная галочка должна быть отключена.
Включить mod_rewrite для сайта можно через меню «Сайты»:
2026-07-21 00:50:05 +03:00
![Включение для сайта](img/isp_mod_rewrite5.png)
2026-07-21 23:21:53 +03:00
В меню выберите интересующий сайт, включите галочку «Включить для сайта поддержку mod_rewrite для nginx» и сохраните.
С этого момента модуль будет обрабатывать .htaccess и правила mod_rewrite.
Предупреждение! Прошу заметить, что директивы `<IfModule>` и директивы, не относящиеся к 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.