location ~ \.php$
Maxim Dounin
mdounin at mdounin.ru
Fri Oct 19 01:45:02 MSD 2007
Hello!
On Thu, 18 Oct 2007, Gena Makhomed wrote:
>>> MD> Совсем правильный ответ - перепроектировать систему так,
>>> MD> чтобы location'ы с регулярными выражениями в конфиге отсутствовали.
>
>>> потому что сопоставление запроса и регулярного выражения в location ~ \.php$
>>> занимает слишком много ресурсов процессора, или почему такая рекомендация?
>
> MD> Потому что они все проверяются для каждого запроса последовательно, внося
> MD> оверхед пропроциональный количеству описанных location'ов с regexp'ами.
> MD> Соответственно - такой подход не масштабируется.
>
> Ok. а если location`ы сделать вложенными, [ http://www.lexa.ru/nginx-ru/msg13856.html ]
>
> IS> http {
> IS> server {
> IS> location / {
> IS> location /a/ {
> IS> location ~ \.php$ {
> ...
> location /b/ {
> location ~ \.phtml$ {
> ...
>
> то при запросе файла /b/2.phtml будет проверяться только один regexp. (?)
Принципиально это, вообще говоря, ситуацию не меняет. Но позволяет
избавиться от лишнего оверхеда там, где он гарантированно не нужен, да.
> от location'ов с регулярными выражениями можно избавиться только
> двумя способами - вынесением статики в отдельные server/location
> и с помощью location @fallback (но здесь будут "лишние" syscalls) (?)
Как вариант - явным прописыванием location'ов, которые нужно проксировать.
Я лично предпочитаю разносить статику и динамику по разным location'ам,
при этом всю динамику прописывать явно.
> MD> Ну и по тем же причинам, о которых уже сказал Игорь - они вносят
> MD> необходимость мучительно искать "а какая же конфигурация сработала".
> MD> Собственно, раз в неделю возникающие вопросы "а почему у меня не
> MD> включается авторизация на index.php" - это оно и есть.
>
> причем в 99.99% случаев они хотят закрыть ip-фильтром/паролем admin-панель сайта.
> многие сайты, написанные на php, так просто на статику и динамику - не разделить.
Понятно, что для произвольного содержимого, в котором нет ни времени ни
желания разбираться (а тем паче для случая хостинга) - "совсем правильно"
не сделаешь. Что не мешает стремиться к прекрасному.
Maxim Dounin
More information about the nginx-ru
mailing list