Super
ну если бы там нельзя было выдавать текст, это было бы запрещено
Super
это я знаю, но по-другому никак
Maxim
это я знаю, но по-другому никак
даже если вас сожрали то у вас все равно есть два выхода, расскажите что же вы такое делаете что так уверены что подругому - никак ?
Super
в этом же локейшене прокси пасс
Super
но иногда данные есть в кеше и он не нужен
Super
поэтому выдаем данные + останавливаем нгинкс, плюс говорим фильтрам не работать
Maxim
Maxim
Super
нельзя вместе с proxy_pass использовать content_by_lua
Super
ну вы спросили почему я вывожу контент в access_by_lua - потому, что в другом блоке его не вывести
Maxim
Super
да
Maxim
в какой фазе происходит выбор location ?
Super
у меня нету выбора локейшен - есть location /
Maxim
Super
я не выбираю локейшен на луа
Super
просто задаю локейшен через location регулярка { }
Maxim
я не выбираю локейшен на луа
я и не просил вас его выбирать, я про то в какой фазе находится запрос когда он обрабатывается location вашим
Super
в content phase
Super
если я верно понимаю
Super
когда уже дошло до proxy_pass
Super
а перед ним выполняется access
Super
поэтому я выполняю его, смотрю нужно ли мне что-то проксировать или нет. и если не нужно - делаю ngx.say(контент) ngx.exit(200) + делаю так, чтобы фильтры не сработали т.к. они на вывод все равно сработают
Super
и вот в этой фазе я думал отправить контент еще и на ссд. а при следующей попытке читать сначала с мемкеша - потом с ссд, а если уж нету кеша - отправиться по всему пути - прокси пасс + фильтры
Maxim
Super
есть пример, как это правильно сделать?
Super
я бы почитал
Super
я понял, т.е. можно просто сделать локейшен каптуре, а затем ngx.exit(200)
Super
но это просто красивости кода, вроде же ничего не поменяется по работе от этого?
Super
спасибо, прочитаю
Super
не знал, что у него такая хорошая дока есть
Maxim
круче этого мануала я пока не встречал
Maxim
рекомендую к прочтению и не один, а два или три раза
Super
да, мне тоже нравится, я его весь прочитаю, спасибо за ссылку
Maxim
Super
и proxy_cache использую, просто не в этом нгинксе
Super
а в этом позже подумаю, как тоже закешить
Super
просто у меня схема такая - 2 сервера по очереди обрабатывают контент
Super
есть рабочий сервер и есть тот, что выдает его
Super
выдающий сервер как раз и закеширует через proxy_cache
Maxim
Varnish пробовали?
Maxim
схема прям под варниш у вас описана
Super
нет, почитаю тоже про него
Maxim
нет, почитаю тоже про него
https://ruhighload.com/%D0%9C%D0%B0%D1%81%D1%88%D1%82%D0%B0%D0%B1%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D0%BE%D0%B5+%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D0%BB%D0%B8%D1%89%D0%B5+%D1%84%D0%BE%D1%82%D0%BE%D0%BA
Super
пишут, что варниш хуже нгинкса отвечает, поэтому лучше делать нгинкс-варниш-нгинкс
Maxim
Super
а, теперь я понял
Super
т.е. все что я сейчас сделал у меня висит на 80м порту
Super
я просто перевешиваю это на 81 порт
Super
открываю его в фаерволе
Super
а, точнее не надо даже открывать
Super
далее просто делаю на 80м порту типа
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:81/;
proxy_cache all;
proxy_cache_valid any 1h;
}
}
Super
и он все захватит как раз
Maxim
Super
да, спасибо, и за мануалы спасибо. мануал от agentzh это как библия, все нужно перечитать по многу раз )
Maxim
Maxim
Super
я кеш ищу не только под эту задачу, а и под хранение данных
Super
но под эту как раз кеш сработает
Super
по поводу задачи - я могу вам привести пример такой задачи и вы поймете, что иначе ее не решить
Super
предположим у меня есть бд с какой-то информацией на 100 млн записей. например все посты всех групп телеграма по программированию.
Super
есть sphinx и есть луа скрипт, который в нем ищет
Maxim
Super
далее, когда я получил результаты, я веду с ними работу - оцениваю те результаты, которые чаще посещают и помещаю их наверх этого запроса
Super
в случае с программированием и китаец и русский будет кликать на один результат, если он его задачу решает. но вообще менталитеты разные. поэтому хранить нужно клики по результатам в срезах по гео. хотя бы по основным гео группам - восток европа, африка..
Super
ну а теперь представьте себе 200 млн кейвордов по программированию, каждый набор содержит найденные результаты, и что самое важное клики по ним в рамках этого запроса. плюс еще кучу всякое статистики - время посещения этого результата с этой страницы и т.д. - релейтед запросы, релейтед результаты
Super
эта задача в итоге сводится к хранению наборов чисел
Super
key value где и key и value это числа. так наиболее компактно. а где можно я битмапы юзаю
Super
в битмапах есть возможность инкремента в том же редисе
Maxim
Мы такое в ElasticSearch реализовали год назад, но наверное вы просто ещё не совсем закончили составление схемы сервисов для решения вашей задачи, вы близки, рядом, но пока что ещё не, чуть чуть и вы поймёте что ваше решение требует ещё сервисов
Super
elasticsearch будет намного медленнее редиса работать
Super
еще учитывайте, что поисковые боты могут ужасающую нагрузку давать
Super
когда-то лет 5 назад у меня в индексе гугл было пару млрд страниц )