Closed ioua closed 14 years ago
Внутри eval переменную $uri использовать нельзя.
У меня вот рабочий конфиг, уже, благодаря Вам, почти с весны работает, но на 0.7
eval_escalate on;
eval $path {
set $memcached_key "$uri";
memcached_pass 10.0.0.2:11211;
}
На github есть такой пользователь init. У него переписывание $uri ломает какой-то там модуль. Таким образом, у ваши требования конфликтуют между собой. Договоритесь между собой, а затем возвращайтесь ко мне.
Мне не принципиально :) Прописал set $memcached_key "$request_uri"; Вроде работает. Проверю детальнее, отпишусь.
Огромное спасибо за фичу, и скорый ответ! Успехов!
Замечательно!
:( Проверил, плеер передаёт кучу параметров. /img_v/mp4-public/uuu_d2257c3c21eab413fdf7c4891bb1a3a9_00068006.flv?start=0&id=mediaplayer&client=FLASH%2520WIN%252010,1,85,3&version=4.3.132&width=400
а мне нужен только /img_v/mp4-public/uuu_d2257c3c21eab413fdf7c4891bb1a3a9_00068006.flv в качестве ключа, в каком месте модуля нужно пофиксить? Я могу руками под себя править при каждой новой версии модуля :( Не думаю что init согласится.
я расписал подробно, что модуль ngx-eval-module версии 1.0.2 (11f7161d) делает некорректно по отношению к другим модулям, это реальная проблема, от этого могут сломаться другие сторонние модули: http://github.com/vkholodkov/nginx-eval-module/issues/issue/2/#issue/2/comment/503279
правильное решение - не создавать подобный локейшен и ходить напрямую (недостаточно знаю архитектуру nginx чтобы подсказать как это сделать)
быстрое решение: в строке 135, сделать проверку что это не просто подзапрос, а именно подзапрос к /eval, например так: http://github.com/init/nginx-eval-module/commit/87d2acc66ae31f5888bb8b39cd0d5b30d3b60434
http://github.com/vkholodkov/nginx-eval-module/blob/master/ngx_http_eval_module.c Тестировал с nginx-0.7.67 и nginx-0.8.53 1.0.1 с to_uri.patch работает в nginx-0.7.67 а в старших 0.8.* нет
В memcached он запрашивает /eval_*****
<30 new auto-negotiating client connection 30: Client using the ascii protocol <30 get /eval_256556512
error.log
http uri: "/img_v/mp4-public/uuu_d2257c3c21eab413fdf7c4891bb1a3a9_00068006.flv" http subrequest "/eval_527896408?" http posted request: "/eval_527896408?" http script complex value http script var: "/eval_527896408" http script set $memcached_key key: "/eval_527896408" was not found by memcached while reading response header from upstream