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