ПРОЕКТЫ 


  АРХИВ 


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: Экранировани е "?", 0.5.32



On Fri, Oct 26, 2007 at 02:25:20PM +0400, Andrey Ignatov wrote:

> re all
> 
> Есть вот такой кусок конфига:
> 
> ...
> location /images {
>       alias           /usr/local/www/dav/n1;
>       if ($request_uri ~ 
> "\/(\d+)\/(1|2|3|smallest|small|medium|big)\.(\d+\.(jpg|jpeg|gif|png))$") {   
>                        
>               set     $user_id        "$1";
>               set     $size           "$2";
>               set     $photo          "$3";
>  
>               error_page      404 = 
> "/generate/private/create_photo.php?user_id=$user_id&size=$size&photo=$photo&server=10.0.0.17:8181";
>       }
> }
> ...
> location /generate {
>       proxy_pass              http://apache/;
> }
> 
> Т.е. nginx пытается отдать юзеру тумбу, если тумбы нет, то делается
> запрос к срипту генерации на бекенде, который генерит тумбу и возвращает
> X-Accel-Redirect.
> 
> Если имеем вот такой nginx:
> 
> nginx version: nginx/0.5.31
> configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt=-I
> /usr/local/include --with-ld-opt=-L /usr/local/lib
> --conf-path=/usr/local/etc/nginx/nginx.conf
> --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
> --error-log-path=/var/log/nginx-error.log --user=www --group=www
> --without-http_charset_module --without-http_ssi_module
> --without-http_userid_module --without-http_auth_basic_module
> --without-http_autoindex_module --without-http_map_module
> --without-http_referer_module --without-http_fastcgi_module
> --without-http_memcached_module --without-http_limit_zone_module
> --without-http_browser_module --without-http_upstream_ip_hash_module
> --with-debug
> --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
> --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
> --http-log-path=/var/log/nginx-access.log --with-http_dav_module
> --with-http_stub_status_module
> 
> То все нормально и в дебаг-логе видно, что на бекенд (который должен
> сгенерить тумбу) уходит вот такое:
> 
> 2007/10/26 09:43:17 [debug] 13153#0: *1 http proxy header:
> "GET 
> //private/create_photo.php?user_id=1179035&size=small&photo=123.jpeg&server=10.0.0.17:8181
>  HTTP/1.0
> Host: domain.com
> Connection: close
> 
> "
> 
> Обратите внимание - имя скрипта и гет-параметры разделены знаком "?".
> 
> Если же ставлю:
> nginx version: nginx/0.5.32
> configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt=-I
> /usr/local/include --with-ld-opt=-L /usr/local/lib
> --conf-path=/usr/local/etc/nginx/nginx.conf
> --sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
> --error-log-path=/var/log/nginx-error.log --user=www --group=www
> --without-http_charset_module --without-http_ssi_module
> --without-http_userid_module --without-http_auth_basic_module
> --without-http_autoindex_module --without-http_map_module
> --without-http_referer_module --without-http_fastcgi_module
> --without-http_memcached_module --without-http_limit_zone_module
> --without-http_browser_module --without-http_upstream_ip_hash_module
> --with-debug
> --http-client-body-temp-path=/var/tmp/nginx/client_body_temp
> --http-proxy-temp-path=/var/tmp/nginx/proxy_temp
> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
> --http-log-path=/var/log/nginx-access.log --with-http_dav_module
> --with-http_stub_status_module
> 
> 
> то получаю:
> 
> 2007/10/26 10:01:59 [debug] 15423#0: *1 http proxy header:
> "GET 
> //private/create_photo.php%3fuser_id=1179035&size=2&photo=123.jpeg&server=10.0.0.17:8181
>  HTTP/1.0
> Host: domain.com
> Connection: close
> 
> "
> 
> Обратите внимание - "?" уже заменился nginx'ом на "%3f".
> В 0.5.32 были проведены работы по экранированию символов. Возможно
> что-то поломалось ?

Да, есть такое дело. В 0.6.16 будет исправлено.


-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.