Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nginx rewrite + memcached не срабат	ывает эта связка
 
 
Ок, пробуем сдисковым кешем и с указанным вами конфигом:
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@xxxxxx 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@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
 
 
 |