ПРОЕКТЫ 


  АРХИВ 


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: революционные нанотехнологии!


  • To: Igor Sysoev <nginx-ru@xxxxxxxxx>
  • Subject: Re: революционные нанотехнологии!
  • From: "Denis F. Latypoff" <denis@xxxxxxxxxx>
  • Date: Thu, 11 Dec 2008 19:57:55 +0600
  • Domainkey-signature: a=rsa-sha1; h=Received:Date:From:X-Mailer:Organization:X-Priority:Message-ID:To:Subject:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding; b=VS6Ncjan+LyaldktOf/tlavhZ4h3veWoUCppA1mrVaV3HUjxivszD4OKU/+8r1466+VAMMnO3aA5JDtX0hHc+LYcCIopYTDp0IuVT55klSQ0TaC6/sXIwzGhJdChb+GJ; c=nofws; d=gostats.ru; q=dns; s=default
  • In-reply-to: <20081211124647.GS81761@xxxxxxxxxxxxx>
  • Organization: GoStats.RU
  • References: <20081211124647.GS81761@xxxxxxxxxxxxx>

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 и он уверенно завоевыает еще
  несколько процентов в статистике веб-серверов.

как-то так.. :))

-- 
Best regards,
 Denis                            mailto:denis@xxxxxxxxxx




 




Copyright © Lexa Software, 1996-2009.