เชฎเชพเชฐเชพ เชเช เชฎเชฟเชคเซเชฐ เชธเชพเชฅเซ เชธเซเชฅเซ เช เชชเซเชฐเชฟเชฏ เชตเชพเชฐเซเชคเชพ เชฌเชจเซ. เชชเชฐเชเชคเซ เชคเซ เชฎเชฟเชเชพเชเชฒ เชฎเชพเชเซ เชเซเชเชฒเซเช เช เชชเซเชฐเชฟเชฏ เชนเชคเซเช, เชคเซ เชฎเชพเชฐเชพ เชฎเชพเชเซ เชเชเชฒเซเช เช เชฎเชจเซเชฐเชเชเช เชนเชคเซเช.
เชฎเชพเชฐเซ เชเชนเซเชตเซเช เช เชเซเชเช เชเซ เชฎเชพเชฐเซ เชฎเชฟเชคเซเชฐ เชคเชฆเซเชฆเชจ เชเซ เชฏเซเชจเชฟเชเซเชธ-เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ: เชธเชฟเชธเซเชเชฎ เชเชพเชคเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ เชถเชเซ เชเซ MySQL, PHP, เช
เชจเซ เชธเชฐเชณ เชธเซเชเชฟเชเชเซเชธ เชเชฐเซ nginx.
เช
เชจเซ เชคเซเชจเซ เชชเชพเชธเซ เชฌเชพเชเชงเชเชพเชฎ เชธเชพเชงเชจเซเชจเซ เชธเชฎเชฐเซเชชเชฟเชค เชเช เชกเชเชจ เชเซ เชฆเซเชข เชตเซเชฌเชธเชพเชเชเซเชธ เชเซ.
เชเซเชเชจเชธเซเชจเซ เชธเชฎเชฐเซเชชเชฟเชค เช เชธเชพเชเชเซเชธเชฎเชพเชเชฅเซ เชเช เชธเชฐเซเช เชเชจเซเชเชฟเชจเชจเชพ เชเซเชชเชฎเชพเช เชจเชฟเชถเซเชเชฟเชคเชชเชฃเซ เชฌเซเชธเซ เชเซ. เช เชธเชพเชเช เชฌเชฟเชจ-เชตเซเชฏเชพเชตเชธเชพเชฏเชฟเช เชธเชฎเซเชเซเชทเช เชเซ, เชชเชฐเชเชคเซ เชเซเชเชจเซ เชคเซเชจเชพ เชชเชฐ เชนเซเชฎเชฒเซ เชเชฐเชตเชพเชจเซ เชเชฆเชค เชชเชกเซ เชเช เชเซ. เชคเซ DDoS, เชชเชเซ เชฌเซเชฐเซเช เชซเซเชฐเซเชธ, เชชเชเซ เชคเซเช เช
เชถเซเชฒเซเชฒ เชเชฟเชชเซเชชเชฃเซเช เชฒเชเซ เชเซ เช
เชจเซ เชนเซเชธเซเชเชฟเชเช เช
เชจเซ RKN เชจเซ เช
เชชเชถเชฌเซเชฆเซ เชฎเซเชเชฒเซ เชเซ.
เช
เชเชพเชจเช, เชฌเชงเซเช เชถเชพเชเชค เชฅเช เชเชฏเซเช เช
เชจเซ เช เชถเชพเชเชคเชฟ เชธเชพเชฐเซ เชจ เชนเซเชตเชพเชจเซเช เชฌเชนเชพเชฐ เชเชตเซเชฏเซเช, เช
เชจเซ เชธเชพเชเช เชงเซเชฎเซ เชงเซเชฎเซ เชถเซเชง เชชเชฐเชฟเชฃเชพเชฎเซเชจเซ เชเซเชเชจเซ เชฐเซเชเชพเช เชเซเชกเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช.
เชคเซ เชเช เชเชนเซเชตเชค เชนเชคเซ, เชชเชเซ เชธเชเชเชพเชฒเชเชจเซ เชตเชพเชฐเซเชคเชพ.
เชธเซเชตเชพเชจเซ เชธเชฎเชฏ เชจเชเซเช เชนเชคเซ เชคเซเชฏเชพเชฐเซ เชซเซเชจ เชตเชพเชเซเชฏเซ: โเชธเชพเชจ, เชคเชฎเซ เชฎเชพเชฐเชพ เชธเชฐเซเชตเชฐเชจเซ เชเซเชถเซ เชจเชนเซเช? เชฎเชจเซ เชฒเชพเชเซ เชเซ เชเซ เชฎเชจเซ เชนเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชนเชคเซ, เชนเซเช เชคเซ เชธเชพเชฌเชฟเชค เชเชฐเซ เชถเชเชคเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชฒเชพเชเชฃเซเช เชฎเชจเซ เชคเซเชฐเซเชเชพ เช
เช เชตเชพเชกเชฟเชฏเชพ เชธเซเชงเซ เชเซเชกเซเชฏเซ เชจเชฅเซ. เชเชฆเชพเช เชฎเชพเชฐเชพ เชฎเชพเชเซ เชชเซเชฐเชพเชจเซเชเชฏเชพเชจเซ เชธเชพเชฐเชตเชพเชฐ เชฒเซเชตเชพเชจเซ เชธเชฎเชฏ เชเชตเซ เชเชฏเซ เชเซ?"
เชคเซเชฏเชพเชฐเชชเชเซ เช
เชกเชงเชพ เชเชฒเชพเชเชจเซ เชเชฐเซเชเชพ เชนเชคเซ เชเซเชจเซ เชธเชพเชฐเชพเชเชถ เชจเซเชเซ เชฎเซเชเชฌ เชเซ:
- เชนเซเชเชฟเชเช เชฎเชพเชเซเชจเซ เชเชฎเซเชจ เชคเชฆเซเชฆเชจ เชซเชณเชฆเซเชฐเซเชช เชนเชคเซ;
- เชนเซเชฎเชฒเชพเชเซเชฐ เชธเซเชชเชฐเชฏเซเชเชฐ เช เชงเชฟเชเชพเชฐเซ เชฎเซเชณเชตเซ เชถเชเซ เชเซ;
- เชนเซเชฎเชฒเซ (เชเซ เชคเซ เชฅเชฏเซ เชนเซเชฏ เชคเซ) เชเชพเชธ เชเชฐเซเชจเซ เช เชธเชพเชเช เชชเชฐ เชจเชฟเชถเชพเชจ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชนเชคเซ;
- เชธเชฎเชธเซเชฏเชพเชตเชพเชณเชพ เชตเชฟเชธเซเชคเชพเชฐเซเชจเซ เช เซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชเซ เช เชจเซ เชคเชฎเชพเชฐเซ เชซเชเซเชค เชคเซ เชธเชฎเชเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชถเซเช เชคเซเชฏเชพเช เชเซเช เชเซเชเชธเชชเซเชเช เชนเชคเซเช;
- เชนเซเช เชธเชพเชเช เชเซเชก เช เชจเซ เชกเซเชเชพเชฌเซเชธเซเชธเชจเซ เช เชธเชฐ เชเชฐเซ เชถเชเซเชฏเซเช เชจเชฅเซ.
เชเซเชฒเซเชฒเชพ เชฎเซเชฆเซเชฆเชพ เชตเชฟเชถเซ.
เชฎเชพเชคเซเชฐ เชธเชซเซเชฆ เชซเซเชฐเชจเซเชเชเชจเซเชก IP เชตเชฟเชถเซเชตเชฎเชพเช เชฌเชนเชพเชฐ เชเซเช เชเซ. 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 เชเชพเชฐเชฃ เชเซ, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชคเซเชจเชพ เชธเชฟเชตเชพเชฏ เช
เชเซเชฐเชญเชพเช เชชเชฐ เชฌเซเชเซเช เชเชเช เชจเชฅเซ.
เชฐเซเชชเชฐเซเชเชพเช เชจเชพเชจเซ เชเซ, เชเช เชกเชเชจ เชซเชพเชเชฒเซเชฎเชพเช เชธเชพเชฐเซ เชฐเซเชคเซ เชธเชเชฐเชเชฟเชค เชเซ, เชนเซเช เชซเชเซเชค เชคเซเชฎเชจเชพ เชฆเซเชตเชพเชฐเชพ เชเซเชเช เชเซเช เชฌเชฟเชฒเชพเชกเซ'เชเชน เชเช เชชเชเซ เชเช. เชฌเชงเซเช เชธเซเชตเชเซเช เชฒเชพเชเซ เชเซ, เชชเชฐเชเชคเซ เชคเชฎเซ เชเซเชฏเชพเชฐเซเชฏ เชเชพเชฃเชคเชพ เชจเชฅเซ เชเซ เชนเซเช เชเชเชเช เชเซเชเซ เชเชฏเซ เชนเชคเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ, เชฎเชจเซ เชธเชเชชเซเชฐเซเชฃ เชธเซเชเชฟ เชฌเชจเชพเชตเชตเชพ เชฆเซ:
$ 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
เชธเซเชเชฟ เชชเซเชฐเชถเซเชจเชฎเชพเช เชฌเซเชเซ เชชเซเชฐเชถเซเชจ เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ: "เชถเชพ เชฎเชพเชเซ nginx เชจเซเช เชเชตเซเช เชชเซเชฐเชพเชเซเชจ เชธเชเชธเซเชเชฐเชฃ?"
เชตเชงเซเชฎเชพเช, เชธเชฟเชธเซเชเชฎ เชฎเชพเชจเซ เชเซ เชเซ เชจเชตเซเชจเชคเชฎ เชธเชเชธเซเชเชฐเชฃ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชฒเซเช เชเซ:
$ dpkg -l nginx | grep "[n]ginx"
ii nginx 1.14.2-2+deb10u1 all small, powerful, scalable web/proxy server
เชนเซเช เชเซเชฒ เชเชฐเซเช เชเซเช:
- เชฎเซเชถเชพ, เชคเชฎเซ เชเซเชฎ เชซเชฐเซเชฅเซ เชญเซเชเชพ เชฅเชฏเชพ nginx?
- เชฐเชพเชน เชเซเช, เชฎเชจเซ เช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซเช เชคเซ เชชเชฃ เชเชฌเชฐ เชจเชฅเซ!
- เชธเชพเชฐเซเช, เชธเซเช เชเชพเช ...
Nginx เชคเซ เชธเซเชชเชทเซเช เชฐเซเชคเซ เชชเซเชจเชเชฌเซเชฒเซเชก เชเซ เช เชจเซ "-T" เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเซเชเชฟเชจเซเช เชเชเชเชชเซเช เชเช เชเชพเชฐเชฃเชธเชฐ เชเซเชชเชพเชฏเซเชฒ เชเซ. เชนเซเชเชฟเชเช เชตเชฟเชถเซ เชนเชตเซ เชเซเช เชถเชเชเชพ เชจเชฅเซ เช เชจเซ เชคเชฎเซ เชคเซเชจเซ เชธเชนเชเชคเชพเชฅเซ เชธเซเชตเซเชเชพเชฐเซ เชถเชเซ เชเซ เช เชจเซ (เชเซเชฎ เชเซ เชฎเซเชถเชพเช เชธเชฐเซเชตเชฐเชจเซ เชเซเชเชชเชฃ เชฐเซเชคเซ เชจเชตเชพ เชธเชพเชฅเซ เชฌเชฆเชฒเซเชฏเซเช เชเซ) เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชฅเช เชนเซเชตเชพเชจเซเช เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ.
เช เชจเซ เชเชฐเซเชเชฐ, เชเชพเชฐเชฃ เชเซ เชเซเชเชจเซ เช เชงเชฟเชเชพเชฐเซ เชฎเชณเซเชฏเชพ เชเซ เชฐเซเช'เชเชน, เชชเชเซ เชคเซ เชฎเชพเชคเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เช เชฐเซเชฅเชชเซเชฐเซเชฃ เชเซ เชธเชฟเชธเซเชเชฎ เชชเซเชจเชเชธเซเชฅเชพเชชเชฟเชค เชเชฐเซ, เช เชจเซ เชคเซเชฏเชพเช เชถเซเช เชเซเชเซเช เชนเชคเซเช เชคเซ เชถเซเชงเชตเชพเชจเซเช เชจเชเชพเชฎเซเช เชนเชคเซเช, เชชเชฐเชเชคเซ เช เชตเชเชคเซ เชเชฟเชเซเชเชพเชธเชพเช เชเชเชเชจเซ โโเชนเชฐเชพเชตเซเชฏเซเช. เชคเซเช เชเชชเชฃเชพเชฅเซ เชถเซเช เชเซเชชเชพเชตเชตเชพ เชฎเชพเชเชเชคเชพ เชนเชคเชพ เชคเซ เชเชชเชฃเซ เชเซเชตเซ เชฐเซเชคเซ เชถเซเชงเซ เชถเชเซเช?
เชเชพเชฒเซ เชเซเชฐเซเชธ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช:
$ strace nginx -T
เช เชฎเซ เชคเซเชจเซ เชเซเชเช เชเซเช, เชเซเชฐเซเชธ a la เชฎเชพเช เชธเซเชชเชทเซเชเชชเชฃเซ เชชเซเชฐเชคเซ เชฐเซเชเชพเช เชจเชฅเซ
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;
//ngx_dump_config = 1;
break;
เช เชฅเชตเชพ
case 't':
ngx_test_config = 1;
break;
case 'T':
ngx_test_config = 1;
ngx_dump_config = 0;
break;
เชคเซเชฅเซ "-T" เชฆเซเชตเชพเชฐเชพ เชธเซเชเชฟ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชคเซ เชจเชฅเซ.
เชชเชฐเชเชคเซ เชเชชเชฃเซ เชเชชเชฃเซ เชฐเซเชชเชฐเซเชเชพ เชเซเชตเซ เชฐเซเชคเซ เชเซเช เชถเชเซเช?
เชเซ เชฎเชพเชฐเซ เชตเชฟเชเชพเชฐ เชธเชพเชเซ เชนเซเชฏ เช เชจเซ เชธเชฎเชธเซเชฏเชพ เชฎเชพเชคเซเชฐ เชเชฒเชฎเชพเช เชนเซเชฏ ngx_dump_config เชเชพเชฒเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช เชเซเชกเซเชฌเซ, เชธเชฆเชญเชพเชเซเชฏเซ เชคเซเชฏเชพเช เชเช เชเชพเชตเซ เชเซ --with-cc-opt -g เชชเซเชฐเชธเซเชคเซเชค เชเชฐเซ เช เชจเซ เชเชถเชพ เชฐเชพเชเซ เชเซ เชเชชเซเชเชฟเชฎเชพเชเชเซเชถเชจ -O2 เชคเซ เช เชฎเชจเซ เชจเซเชเชธเชพเชจ เชจเชนเซเช เชเชฐเซ. เชคเซ เช เชธเชฎเชฏเซ, เชเชพเชฐเชฃ เชเซ เชฎเชจเซ เชเชฌเชฐ เชจเชฅเซ เชเซ เชเซเชตเซ เชฐเซเชคเซ 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เชชเซเชฐเชพเชฏเซเชเชฟเช เชงเซเชฐเชฃเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชชเชนเซเชฒเชพเชฅเซ เช เชนเชฒ เชเชฐเซเชฏเชพ เชชเชเซ, เชคเซ เชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช เชเซ เชฎเชพเชฒเชตเซเชฐ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชจเซเชฏเซเชจเชคเชฎ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชเชฐเซเชฐเซ เชเซ. nginx เชชเซเชฐเชเชพเชฐ:
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
เชชเชเชฒเชพเชเช:
- เชซเชเชเซเชถเชจเชฎเชพเช เชฌเซเชฐเซเชเชชเซเชเชจเซเช เชธเซเช เชเชฐเซ เชฎเซเชเซเชฏ()
- เชเชพเชฐเซเชฏเชเซเชฐเชฎ เชถเชฐเซ เชเชฐเซ
- เชเชฒเชจเซ เชเชฟเชเชฎเชค เชฌเชฆเชฒเซ เชเซ เชฐเซเชชเชฐเซเชเชพเชจเซเช เชเชเชเชชเซเช เชจเชเซเชเซ เชเชฐเซ เชเซ 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;
เชเชพเชฒเซ เชเซเชฐเชฎเชฎเชพเช เช เชนเซเช เชถเซเช เชฅเช เชฐเชนเซเชฏเซเช เชเซ เชคเซเชจเชพ เชชเชฐ เชเช เชจเชเชฐ เชเชฐเซเช.
เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชเชเชจเซเชเชจเซเช เชฏเชพเชจเซเชกเซเชเซเชธ/เชเซเชเชฒ:
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- เชชเซเชทเซเช เซ เชฌเชฆเชฒเชพเชฏ เชเซ 'เช' เชชเชฐ 'เช' ะธ 'เช' เชชเชฐ 'เช':
sub_filter_once off;
sub_filter 'ะพ' $sign_o;
sub_filter 'ะฐ' $sign_a;
เชคเซ เชธเชพเชเซเช เชเซ, เชเชเชฎเชพเชคเซเชฐ เชธเซเชเซเชทเซเชฎเชคเชพ เชคเซ เชเซ 'a' != 'a' เชเซเชฎ 'เช' != 'เช':
เชเชฎ, เชธเชฐเซเช เชเชจเซเชเชฟเชจ เชฌเซเชเซ เชธเชพเชฎเชพเชจเซเชฏ 100% เชธเชฟเชฐเชฟเชฒเชฟเช เชเซเชเซเชธเซเชเชจเซ เชฌเชฆเชฒเซ, เชฒเซเชเชฟเชจ เชธเชพเชฅเซ เชชเชพเชคเชณเซ เชเชเชฐเซ เชฎเซเชณเชตเซ เชเซ. 'เช' ะธ 'เช'. เช เชเชธเชเช เชชเชฐ เชเซเชตเซ เช
เชธเชฐ เชเชฐเซ เชเซ เชคเซเชจเซ เชเชฐเซเชเชพ เชเชฐเชตเชพเชจเซ เชนเซเช เชนเชฟเชเชฎเชค เชเชฐเชคเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชคเซ เช
เชธเชเชญเชตเชฟเชค เชเซ เชเซ เช
เชเซเชทเชฐเซเชจเชพ เชเชตเชพ เชเชกเชฌเชกเชฅเซ เชถเซเชง เชชเชฐเชฟเชฃเชพเชฎเซเชฎเชพเช เชธเซเชฅเชพเชจเซ เชชเชฐ เชนเชเชพเชฐเชพเชคเซเชฎเช เช
เชธเชฐ เชชเชกเชถเซ.
เชนเซเช เชถเซเช เชเชนเซ เชถเชเซเช, เชเชฒเซเชชเชจเชพ เชธเชพเชฅเซ เชเชพเชฏเซเช.
เชธเชเชฆเชฐเซเชญเซ
เชธเซเชฐเซเชธ: www.habr.com