ПРОЕКТЫ 


  АРХИВ 


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]

Странное поведение if-set


  • To: nginx-ru@xxxxxxxxx
  • Subject: Странное поведение if-set
  • From: Ivan Boldyrev <lispnik@xxxxxxxxx>
  • Date: Thu, 18 Sep 2008 14:11:12 +0700
  • Openpgp: id=0xE2B9AC8FAE956E17; preference=signencrypt
  • Organization: this field is intentionally left blank

Здравствуйте!

Пытаюсь настроить nginx+MoinMoin через FastCGI (Gentoo Linux на x86).
Пробовал 0.6.29 и 0.7.16.

MoinMoin (это вики) берёт название страницы из PATH_INFO.  Если строка
запроса /wiki/BlaBla, то в PATH_INFO должно быть /BlaBla.

Если делать так:

     location /wiki/ {
         if ($fastcgi_script_name ~ ^/wiki(.*)) {
             set $pinfo $1;
         }
         include /etc/nginx/fastcgi_params;
         fastcgi_param PATH_INFO $pinfo;
         fastcgi_pass localhost:11000;
     }

то вики получает от nginxа PATH_INFO в виде %d0%a1%d0%b8 (если
предположить, что название страницы кириллицей; пробелы тоже получаются
закодированными как %20) -- т.е. http-encoded, что неправильно.
Получается, что либо if, либо set эскейпит строки.

Если сделать так: 

     location /wiki/ {
         include /etc/nginx/fastcgi_params;
         fastcgi_param PATH_INFO $fastcgi_script_name;
         fastcgi_pass localhost:11000;
     }

то вики получает UTF-8 строку, как и должно быть, но впереди стоит
префикс /wiki, и страница опять же не находится (if-set как раз
использовался, чтобы убрать этот префикс, чтобы вычислить PATH_INFO).

Я включил debug и удостоверился, что nginx действительно в первом случае
передаёт закодированную строку, а во втором -- незакодированную, но с
префиксом /wiki.

2008/09/18 13:05:06 [debug] 15344#0: *1 fastcgi param: "PATH_INFO: 
/%d0%a1%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%b0%d1%82%d0%b8%d0%ba%d0%b0"

2008/09/18 13:08:11 [debug] 15540#0: *1 fastcgi param: "PATH_INFO: 
/wiki/[UTF-8-string]"

Есть ли какой-нибудь другой способ вычислить PATH_INFO?

-- 
Ivan Boldyrev




 




Copyright © Lexa Software, 1996-2009.