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