Re: nginx rewrite + memcached не срабатывает эта связка

TJ на dir.bg TJ на dir.bg
Чт Июн 17 11:22:16 MSD 2010


Извините, все в порядке.

Вопрос с использованием дискового кеша закрыт.

Вопрос с использованием мемкеша - остается открытым.

С уважением,
TJ


TJ at dir.bg пишет:
> Ок, пробуем сдисковым кешем и с указанным вами конфигом:
>
> nginx version: nginx/0.8.40
> built by gcc 4.3.1 (Debian 4.3.1-2)
> TLS SNI support enabled
> configure arguments: --without-http_uwsgi_module 
> --conf-path=/etc/nginx/nginx.conf 
> --error-log-path=/var/log/nginx/error.log 
> --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock 
> --http-log-path=/var/log/nginx/access.log 
> --http-client-body-temp-path=/var/lib/nginx/body 
> --http-proxy-temp-path=/var/lib/nginx/proxy 
> --http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
> --with-http_stub_status_module --with-http_flv_module 
> --with-http_ssl_module --with-http_dav_module --with-http_realip_module
>
> На это "proxy_pass 127.0.0.1:8070/news.php?id=$2;" идет ругань в логах:
>
> 2010/06/16 11:55:03 [error] 16062#0: *2845 invalid URL prefix in 
> "127.0.0.1:8050/news.php?id=6456827", client: 123.123.123.123, server: 
> aaaa.bbb.cc, request: "GET /news/la-la-la-6456827 HTTP/1.1", host: 
> "aaaa.bbc.cc"
>
>
> С уважением,
> TJ
>
>
> Igor Sysoev пишет:
>> On Thu, Jun 10, 2010 at 06:41:59PM +0400, Igor Sysoev wrote:
>>
>>  
>>> On Thu, Jun 10, 2010 at 05:09:49PM +0400, TJ at dir.bg wrote:
>>>
>>>    
>>>> Приветствую!
>>>>
>>>> Nginx 0.7.65, debian
>>>>
>>>> Есть мемкеш, в нем по ключу "$host:$uri" лежит содержимое страницы 
>>>> (ключи экспарятся каждую минуту).
>>>>
>>>> Если такого ключа нет, управление передается (proxy_pass и далее) 
>>>> php-скрипту, который отрабатывает запрос, показывает содержимое и 
>>>> кладет содержимое страницы в кеш по нужному ключу.
>>>>
>>>> Тут все стандартно, все работает.
>>>>
>>>> Также есть rewrite, работающий, проверено.
>>>>
>>>> А вот при попытке скрестить реврайт и мемкеш получается странное, 
>>>> редирект на корень хоста!
>>>>
>>>>
>>>> Кусок конфига:
>>>> ...
>>>>         location / {
>>>>  
>>>>             if ($request_method = POST) {
>>>>                     proxy_pass http://127.0.0.1:8050;
>>>>                     break;
>>>>             }
>>>>  
>>>>            location /news/ {
>>>>                     rewrite ^/news/(.*)-([0-9]+)$   /news.php?id=$2 
>>>> last;
>>>>             }
>>>>  
>>>>             set  $memcached_key  "$host:$uri";
>>>>  
>>>>             memcached_pass   10.100.0.47:11211;
>>>>  
>>>>             default_type     text/html;
>>>>             error_page       404 502 403 503 = /_fall_ ;
>>>>         }
>>>>  
>>>>         location = /_fall_ {
>>>>             proxy_pass 127.0.0.1:8070
>>>>             ...
>>>>         }
>>>> ...
>>>>
>>>> Причем, выносили rewrite за пределы location / (меняя на break в 
>>>> конце) - не помогает.
>>>>
>>>> реврайт срабатывает:
>>>> 2010/06/09 10:10:21 [notice] 12727#0: *2215 "^/news/(.*)-([0-9]+)$" 
>>>> matches "/news/la-la-la-6456827", client: 123.123.123.123, server: 
>>>> aaaa.bbb.cc, request: "GET /news/la-la-la-6456827 HTTP/1.1", host: 
>>>> "aaaa.bbb.cc"
>>>> 2010/06/09 10:10:21 [notice] 12727#0: *2215 rewritten data: 
>>>> "/news.php", args: "id=6456827", client: 123.123.123.123, server: 
>>>> aaaa.bbb.cc, request: "GET /news/la-la-la-6456827 HTTP/1.1", host: 
>>>> "aaaa.bbb.cc"
>>>>
>>>> После не следует никакого обращения к php-скрипту news.php, в 
>>>> proxy_pass не передается ничего, просто редирект в /
>>>>
>>>> В чем может быть затык?
>>>>
>>>> Спасибо за помощь!
>>>>       
>>> Поставьте 0.8.40 с таким конфигом:
>>>
>>>     proxy_cache_path  /path/to/cache  levels=1:2  keys_zone=CACHE:10m;
>>>
>>>     server {
>>>     
>>
>> +          proxy_cache         CACHE;
>> +          proxy_cache_valid   1m;
>>
>>  
>>>          location / {
>>>              proxy_pass 127.0.0.1:8070;
>>>          }
>>>            location /news/ {
>>>              location ~ ^/news/(.*)-([0-9]+)$  {
>>>                  proxy_pass   proxy_pass 127.0.0.1:8070/news.php?id=$2;
>>>              }
>>>          }
>>>     
>>
>>
>>   
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru



Подробная информация о списке рассылки nginx-ru