Hello! On Wed, Oct 03, 2018 at 08:04:25PM +0500, Илья Шипицин wrote:
> ср, 3 окт. 2018 г. в 17:36, Maxim Dounin <mdou...@mdounin.ru>: > > > Hello! > > > > On Wed, Oct 03, 2018 at 01:23:46PM +0500, Илья Шипицин wrote: > > > > > ср, 3 окт. 2018 г. в 12:11, Roman Arutyunyan <a...@nginx.com>: > > > > > > > On Wed, Oct 03, 2018 at 08:10:13AM +0300, Alexander Azarov wrote: > > > > > Здравствуйте! > > > > > > > > > > У меня вопрос про mirror. Он у меня срабатывает, только если в > > локейшне > > > > > есть proxy_pass. Если там rewrite..redirect или return, то подзапрос > > не > > > > > случается, в логе совсем пусто (даже в debug логе). Так и должно > > быть? > > > > Если > > > > > да, то может быть имеет смысл что-то в лог писать, а то нелогично > > как-то > > > > > получается, директива в конфиге есть, а действия никакого нет. > > > > > > > > Миррор создается в фазе precontent, а rewrite и return - на более > > ранней > > > > фазе > > > > rewrite. В вашем случае запрос завершается в фазе rewite и не доходит > > до > > > > фазы precontent, в которой создается mirror. Дело тут не в > > proxy_pass, а > > > > в rewrite/return. Если бы в локейшене просто отдавалась статика, то > > mirror > > > > бы также работал. Непонятно что можно в этом случае писать в лог, если > > > > запрос просто завершается на более ранней стадии. > > > > > > > > > > я наверное, неправильно поступлю. но у меня два вопроса )) > > > > > > 1) мы игрались с mirror - штука годная. но когда мы хотели ее подебажить, > > > мы добавили access_log, в него ничего не записалось. мы включили снифер - > > > запросы увидели. не совсем понятно, лог можно указать, с точки зрения > > nginx > > > директива access_log в локейшене миррора не является ошибкой. но не > > > логирует. надо доки читать. оченьсложна > > > > Mirror использует подзапросы, аналогично SSI и add_after_body. > > Подзапросы рассматриваются как часть основного запроса, и отдельно > > логгируются, только если это специально разрешить, > > http://nginx.org/r/log_subrequest. > > > > > т.е. это гибкость ? могу в локейшене с митррором указать access_log, не > указать логирование подзапросов, и ничего > логироваться не будет ? с какой целью заложено такое ? Заложено - то, что подзапросы не логгируются. Смысла их логгировать - в подавляющем большинстве случаев нет, они неразрывно связаны с основным запросом и отдельного интереса не представляют. То есть в access_log логгируются запросы, полученные от клиентов, и результат выполнения этих запросов. А не некие внутренние сущности, которые nginx породил в процессе обработки этих запросов, и у которых нет ни своего ip-адреса клиента, ни своей строки запроса, ни своих заголовков запроса, ни даже, строго говоря, своих заголовков ответа. Если очень хочется эти внутренние сущности таки увидеть - есть ручка log_subrequest, которая позволяет это сделать. Но надо понимать, что результат может оказаться несколько не такой, как ожидалось, потому что смотри выше - собственной информации у этих подзапросов очень немного, и, скажем, log-формат по умолчанию - непригоден для их логгирования чуть менее, чем полностью. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru