революционные нанотехнологии!

Pavel Khusainov alvelcom at rambler.ru
Thu Dec 11 20:30:08 MSK 2008


> Hello Igor,
> Thursday, December 11, 2008, 6:46:47 PM, you wrote:
> > Поскольку я уже не могу смотреть без боли на кучи реврайтов,
> > то сегодня я изобрел революционную директиву file_match.
> > Вместо
> >    location / {
> >        if (-f $request_filename) {
> >            break;
> >        }
> >        if (-f $request_filename/index.html) {
> >            rewrite (.*) $1/index.html break;
> >        }
> >        if (-f $request_filename.html) {
> >            rewrite (.*) $1.html break;
> >        }
> >        if (!-f $request_filename) {
> >            proxy_pass http://mongrel;
> >            break;
> >        }
> >    }
> > предлагается писать
> >       location / {
> >           file_match  $uri  $uri/index.html  $uri.html
> >                       @mongrel;
> >       }
> >       location @mongrel {
> >           proxy_pass  http://mongrel;
> >       }
> > Для любителей Drupal/Joomla:
> >       location / {
> >           file_match  $uri  @drupal;
> >           # то же самое, что
> >           #    error_page  404 = @drupal; log_not_found off;
> >       }
> >       location ~ \.php$ {
> >           file_match  $uri  @drupal;
> >           fastcgi_pass   ...
> >           fastcgi_param  SCRIPT_FILENAME /path/to$script_filename;
> >       }
> >       location @drupal {
> >           fastcgi_pass   ...
> >           fastcgi_param  SCRIPT_FILENAME /path/to/index.php;
> >       }
> > file_match перебирает параметры и пытается найти соответствие на 
файловой
> > системе. Если файл найден, то URI меняется на этот параметр и 
обработка
> > делается в том же location'е. Последний параметр - fallback.
> Осмелюсь предложить более революционное решение:
>   file_match переименовываем в drupal (joomla и mongrel будут алиасом
>   директивы drupal). Вменяемый админ/программист будет и дальше
>   использовать "нативный" конфиг (error_page 404 = @fallback;
>   log_not_found off;). Пишем в ChangeLoge:
>         *) Feature: added support for Drupal, Joomla and Mongrel
>                     backends
>   в директорию $(PREFIX)/conf кладем файлик nginx.drupal.conf.default
>   с примером конфига:
>         server {
>             listen IP:PORT;
>             server_name name;
>             # захардкоденное поведение для drupal
>             drupal root=/path/to/drupal/installation
>                    fastcgi=127.0.0.1:9000; # еще что-нибудь?
>             # даже location {} не надо
>         }
>   новость махом разлетается по америкосовским блогам (да и наверняка
>   на офф сайтах этих продуктов это будет новостью №1), америкосы
>   начинают усиленно качать новый nginx и он уверенно завоевыает еще
>   несколько процентов в статистике веб-серверов.
> как-то так.. :))

Возможно, имеет смысл реализовать define
и предоставлять мини-библиотеку предопределенных defin'ов?


--
Pavel Khusainov.





More information about the nginx-ru mailing list