Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fwd: nginx-fastcgi-rewrite
On Friday 16 November 2012 16:39:23 Юрий Гончаров wrote:
> А магия таки есть
>
>
> location ~ ^(/[^/]+) {
> try_files $uri $1/accesspoint.php /public/accesspoint.php
> =405;
> include fastcgi_params_ru;
> set $myuri $uri;
> fastcgi_param REQUEST_URI $myuri;
> fastcgi_connect_timeout 3600;
> fastcgi_send_timeout 3600;
> fastcgi_read_timeout 3600;
> fastcgi_pass unix:/tmp/php.socket;
> client_max_body_size 100m;
> root /www/
> }
>
> При такой конфигурации set отрабатывает до try_files и сохраняется
> промежуточное значение как надо.
> Если этот же location переписать так что делать не set а
> сразу fastcgi_param REQUEST_URI $uri - тогда будет /public/accesspoint.php
> Получается param сетится уже после try_files а set в location ДО...Магия?
> :)
Директива set относится к модулю rewrite:
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html
который сам по себе является одним большим "хаком", ибо его правила выполняются
императивно, в то время, как nginx пытается следовать декларативному стилю.
Порядок директив модуля rewrite имеет значение только между собой в рамках
одного блока location или server. Вы можете для пущей головоломки будущему
админу перенести set вообще в самый конец.
А чтобы не ломать себе голову, лучше по возможности избегать программирования
в конфигурации. К сожалению, эта дурная привычка есть у всех пользователей php
перешедших с apache.
Я и написал в конце: "ещё есть сотня вариантов это получить, той или иной
степени корявости". Вы один из таких вариантов наглядно привели.
--
Валентин Бартенев
http://nginx.com/support.html
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|