Super
ну если бы там нельзя было выдавать текст, это было бы запрещено
Maxim
ну если бы там нельзя было выдавать текст, это было бы запрещено
там можно делать много чего, все конечно от задачи зависит, но в учебнике написано что лучше в этой фазе просто проверить доступ
Super
это я знаю, но по-другому никак
Maxim
это я знаю, но по-другому никак
даже если вас сожрали то у вас все равно есть два выхода, расскажите что же вы такое делаете что так уверены что подругому - никак ?
Super
в этом же локейшене прокси пасс
Super
но иногда данные есть в кеше и он не нужен
Super
поэтому выдаем данные + останавливаем нгинкс, плюс говорим фильтрам не работать
Maxim
в этом же локейшене прокси пасс
как это связано с access_by ?
Super
нельзя вместе с proxy_pass использовать content_by_lua
Maxim
нельзя вместе с proxy_pass использовать content_by_lua
не понимаю о чем вы, обрывки фраз, как буд то еду в лифте и разговариваю по телефону
Super
ну вы спросили почему я вывожу контент в access_by_lua - потому, что в другом блоке его не вывести
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
и вот в этой фазе я думал отправить контент еще и на ссд. а при следующей попытке читать сначала с мемкеша - потом с ссд, а если уж нету кеша - отправиться по всему пути - прокси пасс + фильтры
Super
есть пример, как это правильно сделать?
Super
я бы почитал
Super
я понял, т.е. можно просто сделать локейшен каптуре, а затем ngx.exit(200)
Super
но это просто красивости кода, вроде же ничего не поменяется по работе от этого?
Maxim
есть пример, как это правильно сделать?
https://openresty.org/download/agentzh-nginx-tutorials-en.html#02-nginxdirectiveexecorder03
Super
спасибо, прочитаю
Super
не знал, что у него такая хорошая дока есть
Maxim
но это просто красивости кода, вроде же ничего не поменяется по работе от этого?
капец еще как поменяется, от set до log все будет подругому. Вы главное прочитайте, там все написано то что вам необходимо знать о фазах, и о том как они работают.
Maxim
круче этого мануала я пока не встречал
Maxim
рекомендую к прочтению и не один, а два или три раза
Super
да, мне тоже нравится, я его весь прочитаю, спасибо за ссылку
Maxim
Super
и proxy_cache использую, просто не в этом нгинксе
Super
а в этом позже подумаю, как тоже закешить
Maxim
да, мне тоже нравится, я его весь прочитаю, спасибо за ссылку
после того как вы скинули схему фаз я был уверен что вы уже читали этот мануал
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
пишут, что варниш хуже нгинкса отвечает, поэтому лучше делать нгинкс-варниш-нгинкс
https://ruhighload.com/%D0%9A%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5+%D1%81+nginx
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
и он все захватит как раз
Super
да, спасибо, и за мануалы спасибо. мануал от agentzh это как библия, все нужно перечитать по многу раз )
Super
я кеш ищу не только под эту задачу, а и под хранение данных
Super
но под эту как раз кеш сработает
Super
по поводу задачи - я могу вам привести пример такой задачи и вы поймете, что иначе ее не решить
Super
предположим у меня есть бд с какой-то информацией на 100 млн записей. например все посты всех групп телеграма по программированию.
Super
есть sphinx и есть луа скрипт, который в нем ищет
Super
далее, когда я получил результаты, я веду с ними работу - оцениваю те результаты, которые чаще посещают и помещаю их наверх этого запроса
Super
в случае с программированием и китаец и русский будет кликать на один результат, если он его задачу решает. но вообще менталитеты разные. поэтому хранить нужно клики по результатам в срезах по гео. хотя бы по основным гео группам - восток европа, африка..
Super
ну а теперь представьте себе 200 млн кейвордов по программированию, каждый набор содержит найденные результаты, и что самое важное клики по ним в рамках этого запроса. плюс еще кучу всякое статистики - время посещения этого результата с этой страницы и т.д. - релейтед запросы, релейтед результаты
Super
эта задача в итоге сводится к хранению наборов чисел
Super
key value где и key и value это числа. так наиболее компактно. а где можно я битмапы юзаю
Super
в битмапах есть возможность инкремента в том же редисе
Maxim
Мы такое в ElasticSearch реализовали год назад, но наверное вы просто ещё не совсем закончили составление схемы сервисов для решения вашей задачи, вы близки, рядом, но пока что ещё не, чуть чуть и вы поймёте что ваше решение требует ещё сервисов
Super
elasticsearch будет намного медленнее редиса работать
Super
еще учитывайте, что поисковые боты могут ужасающую нагрузку давать
Super
когда-то лет 5 назад у меня в индексе гугл было пару млрд страниц )