Re: mirror только *_pass

Roman Arutyunyan arut на nginx.com
Ср Окт 3 07:10:58 UTC 2018


Добрый день, Александр.

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
бы также работал.  Непонятно что можно в этом случае писать в лог, если
запрос просто завершается на более ранней стадии.

В nginx devguide есть глава про фазы:

http://nginx.org/en/docs/dev/development_guide.html#http_phases

> Версию nginx и конфиг прикладываю ниже.
> 
> С уважением,
> Александр
> 
> nginx version: nginx/1.15.4
> 
> configure arguments: --prefix=/opt/local
> --with-cc-opt='-I/opt/local/include -Os' --with-ld-opt='-L/opt/local/lib
> -Wl,-headerpad_max_install_names'
> --conf-path=/opt/local/etc/nginx/nginx.conf
> --error-log-path=/opt/local/var/log/nginx/error.log
> --http-log-path=/opt/local/var/log/nginx/access.log
> --pid-path=/opt/local/var/run/nginx/nginx.pid
> --lock-path=/opt/local/var/run/nginx/nginx.lock
> --http-client-body-temp-path=/opt/local/var/run/nginx/client_body_temp
> --http-proxy-temp-path=/opt/local/var/run/nginx/proxy_temp
> --http-fastcgi-temp-path=/opt/local/var/run/nginx/fastcgi_temp
> --http-uwsgi-temp-path=/opt/local/var/run/nginx/uwsgi_temp --with-debug
> --with-http_mp4_module --with-stream
> 
> http {
> 
>   include       mime.types;
> 
>   default_type  application/octet-stream;
> 
> 
>   log_format stat '[$time_local] $server_port $status "$request" "$uri"';
> 
>   log_subrequest on;
> 
>   access_log /dev/stdout stat;
> 
> 
>   server {
> 
>     listen 8000 default_server;
> 
> 
>     location /r {
> 
>       mirror /stats;
> 
>       return 200 "OK";
> 
>     }
> 
> 
>     location = /stats {
> 
>       proxy_pass http://127.0.0.1:8001$uri;
> 
>     }
> 
>   }
> 
> 
>   server {
> 
>     listen 8001 default_server;
> 
> 
>     location /o {
> 
>       return 200 "OK";
> 
>     }
> 
> 
>     location /stats {
> 
>       return 204;
> 
>     }
> 
>   }
> 
> }

> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru


-- 
Roman Arutyunyan


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