рдПрдХ рдЕрдкреНрд░рд┐рдп рдХрд╣рд╛рдиреА рдореЗрд░реЗ рдПрдХ рдорд┐рддреНрд░ рдХреЛ рд╣реБрдИред рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдпрд╣ рдорд┐рдЦрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рд┐рдп рдирд┐рдХрд▓рд╛, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЙрддрдирд╛ рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред
рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореЗрд░рд╛ рджреЛрд╕реНрдд рдХрд╛рдлреА
UNIX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ: рд╡рд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ,
mysql ,
php рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╕рд░рд▓рддрдо
nginx рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рджрд░реНрдЬрди рдФрд░ рдбреЗрдврд╝ рд╕рд╛рдЗрдЯ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВред
рдЗрди рд╕рд╛рдЗрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ, рдЪреЗрдирд╕реЙ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд, рд╢реАрд░реНрд╖ рдЦреЛрдЬ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рдХрд╕рдХрд░ рдмреИрдарддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдЗрдЯ рдПрдХ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╕рдореАрдХреНрд╖рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рдЙрд╕рдХреЗ рдЧрд▓реЗ рдореЗрдВ рдЖрдХрд░ рдЙрд╕ рдкрд░ рд╣рдорд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред рдпрд╛ рддреЛ
DDoS , рдлрд┐рд░ рдХреНрд░реВрд░ рдмрд▓, рдлрд┐рд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЕрд╢реНрд▓реАрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдФрд░ ILV рдХреЛ рдЧрд╛рд▓рд┐рдпрд╛рдБ рднреЗрдЬреЗрдВрдЧреЗред
рдЕрдЪрд╛рдирдХ, рд╕рдм рдХреБрдЫ рд╢рд╛рдВрдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдиреАрд░рд╕рддрд╛ рдЕрдЪреНрдЫреА рдирд╣реАрдВ рдереА, рдФрд░ рд╕рд╛рдЗрдЯ рдзреАрд░реЗ-рдзреАрд░реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд╢реАрд░реНрд╖ рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

рдпрд╣ рдПрдХ рдХрд╣рд╛рд╡рдд рдереА, рдлрд┐рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдмрд╛рдЗрдХ рд╣реАред
рдлреЛрди рдмрдЬрдиреЗ рдкрд░ рд╕рдордп рдиреАрдВрдж рдХреЗ рдХрд░реАрдм рдЖ рд░рд╣рд╛ рдерд╛: тАЬрд╕рд╛рдиреНрдпрд╛, рддреБрдо рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдирд╣реАрдВ рджреЗрдЦреЛрдЧреА? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рднрд╛рд╡рдирд╛ рдХреЛ рддреАрд╕рд░реЗ рд╣рдлреНрддреЗ рднреА рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рд╣реИред рд╢рд╛рдпрдж рдореБрдЭреЗ рд╕рд┐рд░реНрдл рд╡реНрдпрд╛рдореЛрд╣ рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░рд╡рд╛рдирд╛ рд╣реИ? тАЭ
рдЕрдЧрд▓реЗ рдЖрдзреЗ рдШрдВрдЯреЗ рдХреА рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдЬрд┐рд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдкреНрд░рдЬрдирди рднреВрдорд┐ рдХрд╛рдлреА рдЙрдкрдЬрд╛рдК рдереА;
- рдкрдЯрд╛рдЦрд╛ рд╕реБрдкрд░рдпреБрд╕рд░ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ;
- рд╣рдорд▓рд╛ (рдЕрдЧрд░ рдпрд╣ рд╣реБрдЖ) рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рд╛рдЗрдЯ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
- рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рддрдп рд╣реЛ рдЧрдП рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдкреИрда рдХрд╛ рддрдереНрдп рдХреНрдпрд╛ рдерд╛;
- рд╣реИрдХрд┐рдВрдЧ рд╕рд╛рдЗрдЯ рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирд╣реАрдВ рдЫреВ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЦрд┐рд░реА рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рд┐рд░реНрдл рд╡реНрд╣рд╛рдЗрдЯ рдЖрдИрдкреА рдлреНрд░рдВрдЯреЗрдВрдб рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред Http (s) рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдмреИрдХрдПрдВрдб рдФрд░ рдлреНрд░рдВрдЯреЗрдВрдб рдХреЗ рдмреАрдЪ рдХреЛрдИ рд╡рд┐рдирд┐рдордп рдирд╣реАрдВ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рдкрд╛рд╕рд╡рд░реНрдб рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВ, рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЧреНрд░реЗ рдкрддреЗ рдкрд░, 80/443 рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдкреЛрд░реНрдЯ рдмрдВрдж рд╣реИрдВред рд╡реНрд╣рд╛рдЗрдЯ рдЖрдИрдкреА рдмреИрдХрдПрдВрдб рдХреЗрд╡рд▓ рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдорд╛рдЗрдХрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдбреЗрдмрд┐рдпрди 9 рд╕рд╛рдордиреЗ рдХреЗ рдЫреЛрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдХреЙрд▓ рдХреЗ рд╕рдордп рддрдХ рд╕рд┐рд╕реНрдЯрдо рдмрд╛рд╣рд░реА рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рджреНрд╡рд╛рд░рд╛ рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
"рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдкрд╣реБрдБрдЪ рджреЛ," рдореИрдВ рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдиреАрдВрдж рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддрд╛ рд╣реВрдВред "рдореИрдВ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рд╕реЗ рджреЗрдЦреВрдБрдЧрд╛ред"
рдмрд╛рдж рдореЗрдВ:
$ grep -F PRETTY_NAME /etc/*releas* PRETTY_NAME="Debian GNU/Linux 9 (stretch)" $ `echo $SHELL` --version GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu) $ nginx -v nginx version: nginx/1.10.3 $ gdb --version GNU gdb (Debian 8.2.1-2) 8.2.1
рд╕рдВрднрд╡ рд╣реИрдХ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ
рдореИрдВ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рдкрд╣рд▓реЗ
рдмрдЪрд╛рд╡-рдореЛрдб рдореЗрдВ ред рдореИрдВ рдбрд┐рд╕реНрдХ рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛ рд╣реВрдВ,
рдСрд░реНрдЯ- рд▓реЙрдЧреНрд╕,
рдЗрддрд┐рд╣рд╛рд╕ , рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧреНрд╕, рдЖрджрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреНрд▓рд┐рдк рдХрд░рддрд╛ рд╣реВрдВ, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ, рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрдорд╛рдг рддрд┐рдерд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрдЯрд╛рдЦрд╛ "рдкрд╕реАрдирд╛" рд╣реЛрдЧрд╛, рдФрд░ рдЦреБрдж рдХреЛ рдЦреЛрдЬрддреЗ рд╕рдордп рдореАрд╢рд╛ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирдмреВрдЭрдХрд░ "рд░реМрдВрдж" рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рджреЗрдЦрдирд╛ рд╣реИ, рдореИрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╡рд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ
рдирдЧреНрдиреЗрдХреНрд╕ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рджреГрд╢реНрдпрдкрдЯрд▓ рдкрд░ рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
рд╡рд┐рдиреНрдпрд╛рд╕ рдЫреЛрдЯреЗ рд╣реИрдВ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ рджрд░реНрдЬрди рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрд░рдЪрд┐рдд рд╣реИрдВ, рдореИрдВ рдмрд╕
рдмрд┐рд▓реНрд▓реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред рд╕рдм рдХреБрдЫ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХрднреА рднреА
рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реБрдП
рд╣реИрдВ , рдореИрдВ рдкреВрд░реА рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХрд░реВрдВрдЧрд╛:
$ nginx -T nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
рдореБрдЭреЗ рд╕рдордЭ рдирд╣реАрдВ рдЖрдпрд╛: "рд╕реВрдЪреА рдХрд╣рд╛рдБ рд╣реИ?"
$ nginx -V nginx version: nginx/1.10.3 TLS SNI support enabled configure arguments: --with-cc-opt='-g -O2' --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_gunzip_module --with-http_gzip_static_module --with-http_sub_module --with-stream=dynamic --with-stream_ssl_module --with-mail=dynamic --with-mail_ssl_module
рджреВрд╕рд░реЗ рдХреЛ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреНрд╡реЗрд╢реНрдЪрди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ: "рдирдВрдЧреЗрдХреНрд╕ рдХрд╛ рдЗрддрдирд╛ рдкреБрд░рд╛рдирд╛ рд╡рд░реНрдЬрди рдХреНрдпреЛрдВ?"
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рддрд╛рдЬрд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ:
$ dpkg -l nginx | grep "[n]ginx" ii nginx 1.14.2-2+deb10u1 all small, powerful, scalable web/proxy server
рдореИрдВ рдлреЛрди рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:
- рдорд┐рд╢рд╛, рддреБрдо
рдирдЧреАрдиреЗ рдХреНрдпреЛрдВ рдмрдирд╛ рд░рд╣реА рд╣реЛ?
- рдареАрдХ рд╣реИ, рдореИрдВ рдпрд╣ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ!
- рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИ, рд╕реЛ рдЬрд╛рдУ ...
Nginx рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ
рдЖрд╢реНрд╡рд╕реНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ "-T" рдХреЗ рд▓рд┐рдП рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╕реВрдЪреА рдПрдХ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЫрд┐рдкреА рд╣реБрдИ рд╣реИред рд╣реИрдХрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдмрд╕ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ (рдЪреВрдВрдХрд┐ рдорд┐рд╢рд╛ рдиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдХрд┐рд╕реА рдирдП рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ), рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рдХреЛ
рд░реВрдЯ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдорд┐рд▓рд╛
рд╣реИ , рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЗрд╡рд▓
рд╕рд┐рд╕реНрдЯрдо рд░реАрдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдЦрд░рд╛рдм рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдиреЗ рд╕рдкрдиреЗ рдХреЛ рд╣рд░рд╛ рджрд┐рдпрд╛ред рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рд╡реЗ рд╣рдорд╕реЗ рдХреНрдпрд╛ рдЫрд┐рдкрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ?
рдЖрдЗрдП рдЯреНрд░реЗрд╕ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
$ strace nginx -T
рд╣рдо рдЯреНрд░реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд▓рд╛рдЗрдиреЛрдВ рдПрдХ рд▓рд╛ рдирд╣реАрдВ рд╣реИ
write(1, "/etc/nginx/nginx.conf", 21/etc/nginx/nginx.conf) = 21 write(1, "... write(1, "\n", 1
рдордЬрд╝реЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╖реНрдХрд░реНрд╖ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ
$ strace nginx -T 2>&1 | wc -l 264 $ strace nginx -t 2>&1 | wc -l 264
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб
/src/core/nginx.c рдХрд╛ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛
case 't': ngx_test_config = 1; break; case 'T': ngx_test_config = 1; ngx_dump_config = 1; break;
рдлреЙрд░реНрдо рдореЗрдВ рдШрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:
case 't': ngx_test_config = 1; break; case 'T': ngx_test_config = 1;
рдпрд╛
case 't': ngx_test_config = 1; break; case 'T': ngx_test_config = 1; ngx_dump_config = 0; break;
рдЗрд╕рд▓рд┐рдП, -T рджреНрд╡рд╛рд░рд╛ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВ?
рдпрджрд┐ рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд╣реА рд╣реИ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдЪрд░
ngx_dump_config рдореЗрдВ рд╣реИ, рддреЛ рд╣рдо
gdb рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдХреБрдВрдЬреА
--wc-cc-opt -g рдореМрдЬреВрдж рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди
-O2 рд╣рдореЗрдВ рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред рдЙрд╕реА рд╕рдордп рд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐
't' рдорд╛рдорд▓реЗ рдореЗрдВ
ngx_dump_config рдХреЛ рдХреИрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
:, рд╣рдо рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди
рдХреЗрд╕ 't' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
:рдореИрдВ '-T' рдХреЗ рд╕рд╛рде '-t' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВрдпрджрд┐ (ngx_dump_config) рдмреНрд▓реЙрдХ рд╣реЛ рд░рд╣рд╛ рд╣реИ
рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рдирд╛
(ngx_test_config) :
if (ngx_test_config) { if (!ngx_quiet_mode) { ngx_log_stderr(0, "configuration file %s test is successful", cycle->conf_file.data); } if (ngx_dump_config) { cd = cycle->config_dump.elts; for (i = 0; i < cycle->config_dump.nelts; i++) { ngx_write_stdout("# configuration file "); (void) ngx_write_fd(ngx_stdout, cd[i].name.data, cd[i].name.len); ngx_write_stdout(":" NGX_LINEFEED); b = cd[i].buffer; (void) ngx_write_fd(ngx_stdout, b->pos, b->last - b->pos); ngx_write_stdout(NGX_LINEFEED); } } return 0; }
рдмреЗрд╢рдХ, рдпрджрд┐ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдХреЛрдб рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░
'T' :, рдореЗрдВ рдирд╣реАрдВ рд╣реИ
, рддреЛ рдореЗрд░реА рд╡рд┐рдзрд┐ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред
Nginx.conf рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдореИрд▓рд╡реЗрдпрд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдХрд╛ рдиреНрдпреВрдирддрдо
рдирдЧрдиреЗрдХреНрд╕ рд╡рд┐рдиреНрдпрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
events { } http { include /etc/nginx/sites-enabled/*; }
рд╣рдо рд▓реЗрдЦ рдореЗрдВ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗред
рдбрд┐рдмрдЧрд░ рдЪрд▓рд╛рдПрдВ $ gdb --silent --args nginx -t Reading symbols from nginx...done. (gdb) break main Breakpoint 1 at 0x1f390: file src/core/nginx.c, line 188. (gdb) run Starting program: nginx -t [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Breakpoint 1, main (argc=2, argv=0x7fffffffebc8) at src/core/nginx.c:188 188 src/core/nginx.c: No such file or directory. (gdb) print ngx_dump_config=1 $1 = 1 (gdb) continue Continuing. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # configuration file /etc/nginx/nginx.conf: events { } http { map $http_user_agent $sign_user_agent { "~*yandex.com/bots" 1; "~*www.google.com/bot.html" 1; default 0; } map $uri $sign_uri { "~*/wp-" 1; default 0; } map :$sign_user_agent:$sign_uri $sign_o { :1:0 o; default ; } map :$sign_user_agent:$sign_uri $sign_a { :1:0 a; default ; } sub_filter_once off; sub_filter '' $sign_o; sub_filter '' $sign_a; include /etc/nginx/sites-enabled/*; } # configuration file /etc/nginx/sites-enabled/default: [Inferior 1 (process 32581) exited normally] (gdb) quit
рдХрджрдо:
- рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдПрдВ
- рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдорд╛рди рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реЗрдВ config рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ ngx_dump_config = 1
- рдХрд╛рд░реНрдпрдХреНрд░рдо рдЬрд╛рд░реА рд░рдЦреЗрдВ / рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд╕рд▓реА рдХреЙрдиреНрдлрд┐рдЧ рд╣рдорд╛рд░реЗ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдкреНрдпреВрд░рд┐рдпрд╕ рдкреАрд╕ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ:
map $http_user_agent $sign_user_agent { "~*yandex.com/bots" 1; "~*www.google.com/bot.html" 1; default 0; } map $uri $sign_uri { "~*/wp-" 1; default 0; } map :$sign_user_agent:$sign_uri $sign_o { :1:0 o; default ; } map :$sign_user_agent:$sign_uri $sign_a { :1:0 a; default ; } sub_filter_once off; sub_filter '' $sign_o; sub_filter '' $sign_a;
рдЖрдЗрдП рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ рдХреА yandex / google рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд:
map $http_user_agent $sign_user_agent { "~*yandex.com/bots" 1; "~*www.google.com/bot.html" 1; default 0; }
Wordpress рд╕реЗрд╡рд╛ рдкреГрд╖реНрдареЛрдВ рдХреЛ
рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ :
map $uri $sign_uri { "~*/wp-" 1; default 0; }
рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ
map :$sign_user_agent:$sign_uri $sign_o { :1:0 o; default ; } map :$sign_user_agent:$sign_uri $sign_a { :1:0 a; default ; }
html рдХреЗ рдкрд╛рда
рдореЗрдВ- рдкреГрд╖реНрда
'o' рдХреЛ
'o' рдФрд░
'a' рдХреЛ
'a' рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ
ред sub_filter_once off; sub_filter '' $sign_o; sub_filter '' $sign_a;
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реВрдХреНрд╖реНрдорддрд╛ рдпрд╣ рд╣реИ рдХрд┐
'a'! = 'A' 'O' рдХреЗ рд╕рдорд╛рди рд╣реИ
! = 'O :

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░реНрдЪ рдЗрдВрдЬрди рдмреЙрдЯреНрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп 100% рд╕рд┐рд░рд┐рд▓рд┐рдХ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп рд▓реИрдЯрд┐рди
'рдП' рдФрд░
'рдУ' рд╕реЗ рдкрддрд▓рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрдЪрд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЪрд░реНрдЪрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдпрд╣ рдПрд╕рдИрдУ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИрд╢ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ SERP рдореЗрдВ рдкрджреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ рд▓реЛрдЧ рдХрд▓реНрдкрдирд╛ рдХреЗ рд╕рд╛рдеред
рд╕рдВрджрд░реНрдн
GDB рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧgdb (1) - рд▓рд┐рдирдХреНрд╕ рдореИрди рдкреЗрдЬstrace (1) - рд▓рд┐рдирдХреНрд╕ рдореИрди рдкреЗрдЬрдирдЧрдиреЗрдХреНрд╕ - рдореЙрдбреНрдпреВрд▓ ngx_http_sub_moduleрдЖрд░реА, рдЪреЗрдирд╕реЙ рдФрд░ рдкрд╛рд╡рд░ рдЖрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ