This commit is contained in:
Alexey Berezhok
2026-07-21 00:50:05 +03:00
parent 6e32005129
commit 053d60f354
6 changed files with 69 additions and 26 deletions

View File

@@ -85,3 +85,38 @@ sudo dnf install _packages/ispmanager-plugin-nginx_mod_rewrite_plugin-0.0.1-1.el
Для отмены сборки, нажмите кнопку "Отменить сборку". Для сборки и установки хука пересборки при обновлении 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
```
соответсвенно.
Далее нужно перейти в глобальные настройки модуля:
![Глобальные настройки модуля](img/isp_mod_rewrite3.png)
Для этого как показано на изображении нужно перети во "Все разделы" и далее найти раздел "mod_rewrite для nginx" и его пункт меню "Настройка модуля nginx".
Откроется следующее окно настроек:
![Настройки](img/isp_mod_rewrite4.png)
Где:
- Добавить модуль 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. Может понадобиться если плагин некорректно работает. В общих лучаях данная галочка должна быть отключена.
Включить же mod_rewrite для сайта можно через меню "Сайты":
![Включение для сайта](img/isp_mod_rewrite5.png)
В меню выбрать интересующий сайт и включить галочку "Включить для сайта поддержку mod_rewrite для nginx". И сохранить.

BIN
img/isp_mod_rewrite3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
img/isp_mod_rewrite4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
img/isp_mod_rewrite5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@@ -2,10 +2,25 @@
import os import os
import xml.etree.ElementTree as etree import xml.etree.ElementTree as etree
from xml.dom import minidom
from sys import stdin from sys import stdin
import subprocess import subprocess
import datetime import datetime
def dump_all_to_log(root):
log_path = '/usr/local/mgr5/var/nginx-mod-rewrite-plugin.log'
try:
with open(log_path, 'a') as log_file:
timestamp = datetime.datetime.now().isoformat()
xml_str = etree.tostring(root, encoding='unicode')
# Prettyprint the XML
pretty_xml = minidom.parseString(xml_str).toprettyxml(indent=" ")
log_file.write(f"{timestamp} - Dumping XML to log:\n{pretty_xml}\n")
log_file.write(f"{timestamp} - Environment variables:\n")
for key, value in sorted(os.environ.items()):
log_file.write(f"{key}={value}\n")
except Exception:
pass
def CheckModuleExists(): def CheckModuleExists():
module_path = '/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf' module_path = '/usr/share/nginx/modules/ngx_http_apache_rewrite_module.conf'
@@ -97,13 +112,10 @@ def Handle(root):
for child in list(parent): for child in list(parent):
if child.tag == 'textdata' and child.get('name') == 'nginx_mod_rewrite_plugin_msg': if child.tag == 'textdata' and child.get('name') == 'nginx_mod_rewrite_plugin_msg':
parent.remove(child) parent.remove(child)
# Find the messages element with name "nginx_mod_rewrite_plugin.settings" for buttons in root.findall(".//buttons"):
messages_elem = root.find(".//messages[@name='nginx_mod_rewrite_plugin.settings']") for btn in list(buttons):
if messages_elem is not None: if btn.tag == 'button' and btn.get('name') == 'ok':
# Find the msg element with name "msg_create" and change its text buttons.remove(btn)
msg_create_elem = messages_elem.find(".//msg[@name='msg_create']")
if msg_create_elem is not None:
msg_create_elem.text = 'Ничего не делать'
if __name__ == "__main__": if __name__ == "__main__":
@@ -134,14 +146,10 @@ if __name__ == "__main__":
if child.tag == 'textdata' and child.get('name') == 'nginx_mod_rewrite_plugin_msg': if child.tag == 'textdata' and child.get('name') == 'nginx_mod_rewrite_plugin_msg':
parent.remove(child) parent.remove(child)
# Find the messages element with name "nginx_mod_rewrite_plugin.settings" for buttons in root.findall(".//buttons"):
messages_elem = root.find(".//messages[@name='nginx_mod_rewrite_plugin.settings']") for btn in list(buttons):
if messages_elem is not None: if btn.tag == 'button' and btn.get('name') == 'ok':
# Find the msg element with name "msg_create" and change its text buttons.remove(btn)
msg_create_elem = messages_elem.find(".//msg[@name='msg_create']")
if msg_create_elem is not None:
msg_create_elem.text = 'Ничего не делать'
etree.dump(root) etree.dump(root)
quit(0) quit(0)

View File

@@ -5,6 +5,13 @@
<settings>nginx_mod_rewrite_plugin.settings</settings> <settings>nginx_mod_rewrite_plugin.settings</settings>
<free /> <free />
</plugin> </plugin>
<mainmenu level="admin+">
<modernmenu>
<node name="nginx_mod_rewrite_plugin_menu" customicon="/manimg/icons/mod_rewrite_menu.svg">
<node name="nginx_mod_rewrite_plugin_menu_settings" customicon="/manimg/icons/mod_rewrite_tool.svg"/>
</node>
</modernmenu>
</mainmenu>
<handler name="nginx_mod_rewrite_plugin.py" type="xml"> <handler name="nginx_mod_rewrite_plugin.py" type="xml">
<func name="nginx_mod_rewrite_plugin.settings" /> <func name="nginx_mod_rewrite_plugin.settings" />
</handler> </handler>
@@ -14,11 +21,11 @@
<textdata name="nginx_mod_rewrite_plugin_msg" type="banner" status="warning"/> <textdata name="nginx_mod_rewrite_plugin_msg" type="banner" status="warning"/>
<textdata name="nginx_mod_rewrite_plugin_msg_info" type="banner" status="info"/> <textdata name="nginx_mod_rewrite_plugin_msg_info" type="banner" status="info"/>
</field> </field>
</form>
<buttons> <buttons>
<button name="ok" type="ok" /> <button name="ok" type="ok" />
<button name="cancel" type="cancel" /> <button name="cancel" type="cancel" />
</buttons> </buttons>
</form>
</metadata> </metadata>
<metadata name="site.edit" type="form"> <metadata name="site.edit" type="form">
<form> <form>
@@ -43,13 +50,6 @@
<event name="site.edit" after="yes"/> <event name="site.edit" after="yes"/>
<func name="nginx_mod_rewrite_plugin_menu_settings"/> <func name="nginx_mod_rewrite_plugin_menu_settings"/>
</handler> </handler>
<mainmenu level="admin+">
<modernmenu>
<node name="nginx_mod_rewrite_plugin_menu" customicon="/manimg/icons/mod_rewrite_menu.svg">
<node name="nginx_mod_rewrite_plugin_menu_settings" customicon="/manimg/icons/mod_rewrite_tool.svg"/>
</node>
</modernmenu>
</mainmenu>
<metadata name="nginx_mod_rewrite_plugin_menu_settings" type="form"> <metadata name="nginx_mod_rewrite_plugin_menu_settings" type="form">
<form needconfirm="yes"> <form needconfirm="yes">
<field name="nginx_mod_rewrite_plugin_menu_module_enable"> <field name="nginx_mod_rewrite_plugin_menu_module_enable">