ПРОЕКТЫ 


  АРХИВ 


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: Как получить тело ответ а в переменной?



24.02.2011 10:33, Виталий Беленький пишет:
=== Контекст ===
Есть сервис А который содержит некий контент на которй хотят ссылаться многие 
сайты. Есть много сервисов 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) в теле 
ответа. Как получить доступ к телу ответа?


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

http://www.grid.net.ru/nginx/eval.ru.html

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


 




Copyright © Lexa Software, 1996-2009.