понедельник, 23 апреля 2012 г.

Парсер .htaccess в формат nginx

Парсер .htaccess в формат nginx

В целом, вариант как у nginx - "1 конфиг на все сайты, при изменении настроек требуется перезапуск" хорош своей скоростью, но не удобством в обслуживании. Например, если мы предоставляем хостинг клиентам, мы или вынуждены отказаться от nginx, или использовать различные костыли, или настроить nginx в режиме максимально простого прокси, лишаясь почти всех его плюшек. 2 вариант -- различные костыли -- это использование всяких систем управления вроде того же isp manager, но и они не могут оптимальный вариант под каждый сайт делать и просто содержат чуть более умную логику вроде попытки отдачи типовых форматов файлов nginx-ом, а при неуспехе передать апачу, вдруг он обработает (error_page 404 = @fallback;).

Можно сделать совсем простой свой вариант -- каждому сайту свой конфиг, который через include подключается в основной, благо система достаточно вменяема (намёк на тупой bind, который не умеет банально *) и можно прописать include "conf.d/*.conf"; а там к каждому проекту например в корень сделать симлинк. reload делать или по крону или по кнопочке в веб-панельке. А можно повесить хук на *notify... Полуавтоматический вариант -- под типовые движки пишутся свои варианты подключаемого конфига, потом определяем что у нас на бэкенде и подставляем нужный.
Можно формировать эти подключаемые конфиги на основе .htaccess, которые давно используются и являются стандартом. Самая большая проблема в том, что автоматического конвертера в пару строк не сделать -- системы работают совершенно по разному.
Есть онлайн-сервисы: http://www.anilcetin.com/convert-apache-htaccess-to-nginx/, http://winginx.ru/htaccess

Так что по теме заметки -- автоматически очень сложно и всё-равно будет нужна ручная доточка, поэтому правильнее всё-таки взять шаблоны и поправить нужный под проект, пользуясь веб-сервисами как помощниками.
Пример автоперевода и как это должно выглядеть тут:
http://rulkov.ru/htaccess-perevodim-v-nginx-conf/
А с готовыми шаблонами получается сложнее, гугл ничего толкового не выдал. Возможно, на этой неделе заведу на том же гитхабе репу и закидаю туда несколько вариантов...

О преобразовании есть и на офсайте, с примером для mongrel:
http://nginx.org/en/docs/http/converting_rewrite_rules.html

http://vds-admin.ru/nginx/zamena-rewriterule-v-nginx-dlya-razlichnykh-cms
http://wiki.opennet.ru/Nginx

Комментариев нет:

Отправить комментарий