Re: mirror только *_pass

Maxim Dounin mdounin на mdounin.ru
Ср Окт 3 12:36:08 UTC 2018


Hello!

On Wed, Oct 03, 2018 at 01:23:46PM +0500, Илья Шипицин wrote:

> ср, 3 окт. 2018 г. в 12:11, Roman Arutyunyan <arut at 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.

> 2) вот допустим, у меня точка, на которую я делаю зеркалирование -
> тормозная. то соединения не устанавливаются, то запросы подтупливают... не
> будет ли это приводить к деградации воркера ?

Подзапрос mirror'а выполняются параллельно основному запросу.  
Однако если он не успеет завершиться к моменту окончания основного 
запроса - это завершение запроса задержит, и соответственно 
задержит последующие запросы в этом же соединении в случае 
постоянных соединений в HTTP/1.x.  То есть плохо работающий 
mirror-бэкенд - может увеличивать latency.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru