ПРОЕКТЫ 


  АРХИВ 


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]

Как получить тело ответа в переменной?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Как получить тело ответа в переменной?
  • From: Виталий Беленький <heman777@xxxxxxxxx>
  • Date: Thu, 24 Feb 2011 10:33:35 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1298532817; bh=J7JFzx929i26nWnAYDaGFh3gzW4texHqhHKtx8u6xUg=; h=From:To:Subject:MIME-Version:Message-Id:Date: Content-Transfer-Encoding:Content-Type; b=rtOfxGPK8F3l0Yy2EjskQo5oaXHFKfxG0UpWMseVAMKwQue/Oe7ggsFSlgrLYRedJ /HfswlkG9pNw2obDV/AvrMvMsN0gT6eGPcHCyt+s6Yu0yZ6xQy7WwR4KYnp1qZt/jc 2VsseTGWYrGYaLqEGMtf+iRGGzNZ1Jmn3knW7hCI=

=== Контекст ===
Есть сервис А который содержит некий контент на которй хотят ссылаться многие 
сайты. Есть много сервисов X которые являются нашими проектами.

Задача: если пользователь ссылается на ресурс А с множесва ресурсов X, то ему 
показывается просто контент, в противном случае контент с рекламой.


Ресурсы X наши и не представляет большой трудности их модификация.

Хочу сделать следующее ресурс X пишет $remote_addr пользователя в memcached с 
expire 20 минут. Ресурс A смотрит есть ли $remote_addr пользователя в базе 
memcached, и если есть то показывает ресурс без рекламы.

Реализация: Вообще это дело можно и на уровне приложения делать, но вот хочется 
на уровне nginx. Итак: при помощи модуля memc читаем memcached, далее делаем 
proxy_pass(или rewrite) с параметром или без в зависимости от результата.


Конфигурация

location /checkip {
    default_type text/plain;

    if ($arg_ip = "") {
        echo "please give me ip as parameter";
        break; 
    }

    set $memc_cmd 'get';
    set $memc_key $arg_ip;
    memc_pass 192.168.197.4:11211;
}


location /checkme {
    default_type text/html;
    # proxy_pass http://192.168.197.4:8888/checkip/?ip=192.168.197.1;
    echo_subrequest_async GET /checkip/ -q 'ip=$remote_addr';

    #echo "=====";
    #echo $http_content;
    #echo "=====";
    #break;

    if ($remote_addr = $http_content) {
        proxy_pass http://192.168.197.4:8888/checkme/?show_adv=1;
        
        echo "You are blocked";
        break;
    }

    proxy_pass http://192.168.197.4:8888/checkme/;
}



А теперь собственно вопрос: memc возвращает значение ключа(/check_ip) в теле 
ответа. Как получить доступ к телу ответа?


-- 
С уважением, Виталий Беленький
tel. : 8-909-955-67-20
email: heman777@xxxxxxxxx

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.