Почему Nginx не поддерживает файлы .htaccess






Этим вопросом обычно задаются люди, до встречи с Nginx работавшие с Apache, и особенно часто те, кому довелось переносить проекты, корректная работа которых плотно зависит от .htaccess. Наиболее простой ответ, который можно дать сразу: .htaccess — это убийца производительности, а Nginx, как мы помним, нацелен именно на то, чтобы обеспечивать её максимальный уровень. Более подробное объяснение связано с тем. как Apache работает с файловой структурой сайтов и с файлами .htaccess в частности.



Всякий раз, когда Apache обрабатывает запрос, он в первую очередь обрабатывает содержимое .htaccess-файла, находящегося в том же каталоге, что и файл страницы. Тут всё понятно. Далее Apache сканирует все родительские каталоги верхнего уровня вплоть до DocumentRoot. То есть, например, если ваш DocumentRoot — /var/www/mysite и сервер обрабатывает запрос к файлу /var/www/mysite/category/section/page.html, то он последовательно будет искать и обрабатывать найденные .htaccess-файлы в каталогах:

  • /var/www/mysite/category/section/
  • /var/www/mysite/category/
  • /var/www/mysite/
  • /var/www/

Крайне важно отметить, что даже если Apache в указанных каталогах файлов .htaccess не обнаружит, он будет предпринимать попытки найти их при каждом запросе, поскольку они там могут появится в любой момент. Конечно, можно запретить серверу обработку .htaccess-файлов в определённых каталогах при помощи директивы AllowOverride, однако автор сомневается в том, что эта возможность широко применяется. Да и в любом случае, это лишь полумера.

Ещё один неприятный момент заключается в том, что .htaccess будучи задуманными как инструмент удобного конфигурирования, в итоге приводят к запутанным схемам конфигурации, от которых иной раз неизвестно чего ожидать. Сфера влияния конфигурации того или иного .htaccess-файла может распространяться на большие иерархии файлов и иногда, чтобы понять как работает, например, правило mod_rewrite, вам придётся перелопатить кучу файлов , при этом закончить поиски где-то в районе httpd.conf.

Очередным камнем в огород .htaccess является тот факт, что при определённых обстоятельствах они могут быть использованы для образования дыры в безопасности. В отличие от глобальных файлов конфигурации сервера, файлы .htaccess размещаются в иерархии домашних каталогов сайтов, и следовательно защищённость их от модификации значительно ниже. Если злоумышленнику удастся получить доступ к модификации .htaccess, то перед ним открываются весь широкие возможности.

Подведём итоги. .htaccess предоставляют удобный способ конфигурирования веб-сервера ленивым администраторам и разработчикам, однако попутно серьёзно снижают производительность, часто-густо приводят к запутанной конфигурации сервера и являются дополнительной брешью в системе безопасности.

Источник




Почему Nginx не поддерживает файлы .htaccess: 4 комментария

    1. А почему он не должен работать под Апачем? Чем вам Апач не угодил?

Комментарии запрещены.