ПРОЕКТЫ 


  АРХИВ 


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: Fwd: nginx-fastcgi-rewrite



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


        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@xxxxxxxxx> написал:
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@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.