ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: location ~ \.php$



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



 




Copyright © Lexa Software, 1996-2009.