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
|