Nginx рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдЫрд╡рд┐


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдордиреЗ Nginx рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдпрд╛, рдФрд░ рдЬрдм рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдореЙрдбреНрдпреВрд▓ Nginx рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдерд╛ред рд╣рдо рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдЦреЛрдЬ рдкрд╛рдП рдФрд░ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рдбрд╝рдиреЗ рд▓рдЧреЗред рд╣рдордиреЗ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдирдпрд╛ рдЕрдиреБрднрд╡ рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рдиред рдЬрд┐рд╕реЗ рдореИрдВ рд╢реЗрдпрд░ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред


рдЖрдЗрдП https://github.com/vozlt/nginx-module-tts рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рд╢реБрд░реВ рдХрд░реЗрдВ ред рдФрд░ рдлрд┐рд░ рд╣рдо рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред


рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛:
рдбреЗрдмрд┐рдпрди 9 рдУрдПрд╕
рдорд╛рдирдХ рдбреЗрдмрд┐рдпрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдирдЧреНрдиреЗрдХреНрд╕ v1.10.3ред nginx -V рдЖрдЙрдЯрдкреБрдЯ:


 nginx version: nginx/1.10.3 built with OpenSSL 1.1.0k 28 May 2019 (running with OpenSSL 1.1.1c 28 May 2019) TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-DhOtPd/nginx-1.10.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/ nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path =/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module - -with-http_stub_status_module --with-http_realip_mod ule --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module= dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --add-dynamic-module=/build/nginx-DhOtPd/nginx-1.10.3/debian/modules/nginx-auth-pam --add-dynamic-module=/build/nginx-DhOtPd/nginx-1.10.3/debian/modules/nginx-dav-ext-module --add-dynamic-module=/build/nginx-DhOtPd/nginx-1.10.3/debian/modules/nginx-echo --add-dynamic-module=/build/nginx-DhOtPd/nginx-1.10.3/debian/modules/nginx-upstream-fair --add-dynamic-module=/build/nginx-DhOtPd/nginx -1.10.3/debian/modules/ngx_http_substitutions_filter_module 

рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдРрд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╕рдм рдХреБрдЫ рдЬреЛ configure arguments: рдмрд╛рдж рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ configure arguments: рдФрд░ рдкрд╣рд▓реЗ --add-dynamic-module , рдЬреЛ рд╣реИ:


 --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-DhOtPd/nginx-1.10.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/ nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path =/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_mod ule --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module= dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module 

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:


  • рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЙрдХ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рддрд╛рдХрд┐ рдореБрдЦреНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд░реЗрдВ, рдбреЗрдмрд┐рдпрди рд▓реЗ рдЬрд╛рдПрдВ: 9 рдЫрд╡рд┐ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдВрдЯреЗрдирд░ рд╕реЗ рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡реЙрд▓реНрдпреВрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

 docker run --rm -it -v /tmp/nginx_module:/nginx_module debian:9 bash 

  • рдХрдВрдЯреЗрдирд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреИрдХреЗрдЬ nginx -V рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪреБрдиреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЧреА:

 apt update apt install git make gcc autoconf wget libpcre3-dev libpcre++-dev zlib1g-dev libxml2-dev libxslt-dev libgd-dev libgeoip-dev 

рдЗрд╕ рд╕реВрдЪреА рд╕реЗ libssl-dev рдкреИрдХреЗрдЬ рдЧрд╛рдпрдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд nginx OpenSSL рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 1.1.0k рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЬрдм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ libssl-dev рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕рдореЗрдВ OpenSSL рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 1.1.0l рдерд╛ред рдЗрд╕рд▓рд┐рдП, рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


  • рд╡реЗрдмрд╕рд╛рдЗрдЯ http://nginx.org/download nginx рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ 1.10.3 рд╣реИред OpenSSL рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ https://www.openssl.org/source/old рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, github рд╕реЗ nginx-рдореЙрдбреНрдпреВрд▓-vts рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

 cd /usr/local/src/ wget http://nginx.org/download/nginx-1.10.3.tar.gz wget https://www.openssl.org/source/old/1.1.0/openssl-1.1.0k.tar.gz git clone git://github.com/vozlt/nginx-module-vts.git tar xvfz nginx-1.10.3.tar.gz tar xzvf openssl-1.1.0k.tar.gz cd nginx-1.10.3 

  • рдЕрдм рдЖрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдирдЧрдгрдХреНрд╕ -V рдХрдорд╛рдВрдб рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВрдиреЗ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред рд╣рдо nginx-рдореЙрдбреНрдпреВрд▓-vts рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП --add-рдбрд╛рдпрдирд╛рдорд┐рдХ-рдореЙрдбреНрдпреВрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ --with -sslsl рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ OpenSSL рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрддрд┐рдо рдЖрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 ./configure --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-DhOtPd/nginx-1.10.3=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_v2_module --with-http_dav_module --with-http_slice_module --with-threads --with-http_addition_module --with-http_geoip_module=dynamic --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_xslt_module=dynamic --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module --with-openssl=../openssl-1.1.0k/ --add-dynamic-module=../nginx-module-vts/ 

  • configure рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦрддреНрдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ; рд╣рдореЗрдВ рд╕рднреА nginx рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:

 make modules 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ nginx рд╕рдВрд╕реНрдХрд░рдг 1.9.13 рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИред


  • рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЛ volume рдХреЙрдкреА рдХрд░реЗрдВ, рдЬреЛ рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдкрд░ рдореБрд╣рд┐рдо рд╢реБрд░реВ рдХреА рдЧрдИ рдереА:

 cp objs/ngx_http_vhost_traffic_status_module.so /nginx_module/ 

  • рдЕрдЧрд▓рд╛, рд╣рдо рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рдкрд░ рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрде /usr/share/nginx/modules ред /etc/nginx/modules-enabled/mod-http-vhost-traffic-status.conf рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдлрд╛рдЗрд▓ /etc/nginx/modules-enabled/mod-http-vhost-traffic-status.conf рдмрдирд╛рддреЗ рд╣реИрдВ:

 load_module modules/ngx_http_vhost_traffic_status_module.so; 

рдФрд░ /etc/nginx/modules-enabled рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдВред


рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж, рд╣рдо nginx -t рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ ... рд╣рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:


 nginx: [emerg] module "/usr/share/nginx/modules/ngx_http_vhost_traffic_status_module.so" is not binary compatible in /etc/nginx/modules-enabled/50-mod-http-vhost-traffic-status.conf:1 

рдФрд░ рдпрд╣рд╛рдВ, рдЖрдорддреМрд░ рдкрд░, рдХреБрдЫ рдШрдмрд░рд╛рд╣рдЯ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд░реЛрдд рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд nginx рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рди рд╣реИрдВ, рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╣реИрдВ, configure рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ рд╕реМрджрд╛ рдХреНрдпрд╛ рд╣реИ?


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрдирд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рдореЙрдбреНрдпреВрд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рддреЛ nginx рдХреИрд╕реЗ рдЬрд╛рдВрдЪрддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП src/core/ngx_module.h ( https://github.com/nginx/nginx/blob/master/src/core/core/ngx_module.h ) рдореЗрдВ nginx рд╕реНрд░реЛрддреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рдХреЛрдб рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдИ рдЪреЗрдХ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 34, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди nginx рдлреЙрд░реНрдо рдХреЗ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ NGX_MODULE_SIGNATURE_0 (1,2,3, рдЖрджрд┐)
рдорд╛рди 1 рдпрд╛ 0. рдЕрдЧрд▓рд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ NGX_MODULE_SIGNATURE
рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рднреА рдЬрд╛рдБрдЪреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореМрдЬреВрджрд╛ nginx рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдирд┐рд░реНрдорд┐рдд рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд░реЗрдЦрд╛:

 strings /usr/share/nginx/modules/ngx_http_vhost_traffic_status_module.so| fgrep '8,4,8' 8,4,8,000011111101011111111111110110111 

  • рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд nginx рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд▓рд╛рдЗрди:

 strings /usr/sbin/nginx| fgrep '8,4,8' 8,4,8,000011111101011111111111110111111 

рдЬрдм рдЗрди рд░реЗрдЦрд╛рдУрдВ рдХреА рдирдЧреНрди рдЖрдВрдЦреЛрдВ рд╕реЗ рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рдЧреНрдиреЗрдЪрд░ рд▓рд╛рдЗрди рдореЗрдВ, рдЕрдВрдд рд╕реЗ рдЪреМрдерд╛ nginx 0 рдирд┐рдХрд▓рд╛, рдЬрдмрдХрд┐ nginx рдореЗрдВ 1. рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИ, рдЖрдкрдХреЛ src/core/ngx_module.h рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ src/core/ngx_module.h рдФрд░ рдЕрдВрдд рд╕реЗ рдЪреМрдереЗ рдЪрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 #if (NGX_HTTP_REALIP) #define NGX_MODULE_SIGNATURE_29 "1" #else #define NGX_MODULE_SIGNATURE_29 "0" #endif #if (NGX_HTTP_HEADERS) #define NGX_MODULE_SIGNATURE_30 "1" #else #define NGX_MODULE_SIGNATURE_30 "0" #endif #if (NGX_HTTP_DAV) #define NGX_MODULE_SIGNATURE_31 "1" #else #define NGX_MODULE_SIGNATURE_31 "0" #endif #if (NGX_HTTP_CACHE) #define NGX_MODULE_SIGNATURE_32 "1" #else #define NGX_MODULE_SIGNATURE_32 "0" #endif #if (NGX_HTTP_UPSTREAM_ZONE) #define NGX_MODULE_SIGNATURE_33 "1" #else #define NGX_MODULE_SIGNATURE_33 "0" #endif #define NGX_MODULE_SIGNATURE 

рд╣рдо рд╡реИрд░рд┐рдПрдмрд▓ NGX_HTTP_HEADERS рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрдм nginx рдирд┐рд░реНрдорд╛рдг 1 рдерд╛, рдФрд░ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╕рдордп 0. рдореЙрдбреНрдпреВрд▓ рдореЗрдВ NGX_HTTP_HEADERS рд╕рд╛рде NGX_HTTP_HEADERS рдХрд░рдиреЗ рдХреЗ NGX_HTTP_HEADERS рдЖрдкрдХреЛ рд▓рд╛рдЗрди have=NGX_HTTP_HEADERS . auto/have рдЬреЛрдбрд╝рдХрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдирд╛ have=NGX_HTTP_HEADERS . auto/have have=NGX_HTTP_HEADERS . auto/have config. рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИ config. рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдирд┐рдореНрди рд╣реИ:


 ngx_addon_name=ngx_http_vhost_traffic_status_module have=NGX_STAT_STUB . auto/have have=NGX_HTTP_HEADERS . auto/have ... 

рдЕрдЧрд▓рд╛, make clean , рдФрд░ рдлрд┐рд░ configure рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ configure рдФрд░ make modules ред рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдпрд╣ nginx рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ:


 $ strings /usr/sbin/nginx| fgrep '8,4,8' 8,4,8,000011111101011111111111110111111 $ strings /usr/share/nginx/modules/ngx_http_vhost_traffic_status_module.so | fgrep '8,4,8' 8,4,8,000011111101011111111111110111111 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдореЙрдбреНрдпреВрд▓ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЖрдк nginx рд╕рд╛рде рдЙрдиреНрдирдд рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢рд╛рдпрдж рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд░реЗрдЦрд╛ рдЕрд▓рдЧ рджрд┐рдЦреЗрдЧреА, рд╕рд╛рде рд╣реА рдЗрд╕ рд▓рд╛рдЗрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЪрд░ рднреА рд╣реЛрдВрдЧреЗред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдм рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВред


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХрд╛ рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХрдИ рдмрд╛рд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореЙрдбреНрдпреВрд▓ nginx рдлрд┐рдЯ рдирд╣реАрдВ рдерд╛, рдирддреАрдЬрддрди, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде nginx рдХреА рдкреВрд░реНрдг рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкрд░ рдЕрдиреНрдп рд▓реЗрдЦ рднреА рдкрдврд╝реЗрдВ:


Source: https://habr.com/ru/post/hi473578/


All Articles