Fwd: nginx-fastcgi-rewrite

Юрий Гончаров neo at miritec.com
Fri Nov 16 12:39:23 UTC 2012


А магия таки есть


        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 ДО...Магия? :)

16 ноября 2012 г., 1:49 пользователь Валентин Бартенев <vbart at nginx.com>написал:

> On Friday 16 November 2012 02:51:44 Юрий Гончаров wrote:
> > Если нужно debuglog я могу его выслать, могу дать детальнее конфиг или
> > дебаг лог, перефразировать вопрос и т д.. Скажите чего именно не хватает
> > чтобы решить задачу именно так как я её озвучил.
> > Спасибо заранее..
> >
>
> Для этого не нужно debug log, все работает именно так, как вы настроили.
> Я вам указываю на проблему и даю ссылку, где прочитать если что-то не
> понятно.
> Свое первое письмо вы начали с фразы "Помогите разобраться".
>
> Так, как вы решаете задачу - решить её невозможно. Вы хотите чтобы файл,
> который
> обрабатывается php-fpm, и URI, переданный в параметрах - отличались, но
> при этом
> для того и другого пытаетесь использовать этот самый URI одновременно. Не
> может
> одна и та же сущность иметь одновременно два разных значения. Сколько его
> раз
> туда-сюда не переписывай, с помощью try_files или с помощью rewrite.
>
> Нужно отделить скрипт от пути, так отделите:
>
>     root /www/projects/domain.com/public_ru;
>
>     location /msg/ {
>         rewrite ^/msg/(.*)/$ /previewmsg?varMd5=$1 break;
>
>         fastcgi_pass unix:/tmp/php.socket;
>
>         include fastcgi_params; # оригинальный, который к nginx прилагался,
>                                 # без SCRIPT_FILENAME
>
>         fastcgi_param SCRIPT_FILENAME
>                       $document_root/public/accesspoint.php;
>
>         # дабы не дублировать REQUEST_URI из fastcgi_params
>         fastcgi_param PATH_INFO        $uri;
>     }
>
> а вообще так, если очень хочется:
>
>     location ~ ^/msg/(.*)/$ {
>         fastcgi_pass unix:/tmp/php.socket;
>
>         fastcgi_param SCRIPT_FILENAME /path/to/accesspoint.php;
>         fastcgi_param QUERY_STRING    varMd5=$1;
>         fastcgi_param REQUEST_URI     /previewmsg;
>
>         # Остальное при необходимости. Понятие не имею,
>         # что ещё php-fpm обязательно требуется для работы,
>         # и что конкретно требуется вам в вашем скрипте.
>     }
>
> ну и ещё есть сотня вариантов это получить, той или иной степени корявости.
>
> --
> Валентин Бартенев
> http://nginx.com/support.html
> http://nginx.org/en/donation.html
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20121116/e5f80c75/attachment.html>


Подробная информация о списке рассылки nginx-ru