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