เจฎเฉเจฐเฉ เจเฉฑเจ เจฆเฉเจธเจค เจจเจพเจฒ เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจฆเฉเจเจฆเจพเจ เจเจนเจพเจฃเฉ เจตเจพเจชเจฐเฉเฅค เจชเจฐ เจเจน เจฎเจฟเจเจพเจเจฒ เจฒเจ เจเจฟเฉฐเจจเจพ เจฆเฉเจเจฆเจพเจ เจจเจฟเจเจฒเจฟเจ, เจเจน เจฎเฉเจฐเฉ เจฒเจ เจเจจเจพ เจนเฉ เจฎเจจเฉเจฐเฉฐเจเจ เจธเฉเฅค
เจฎเฉเจจเฉเฉฐ เจเจนเจฟเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟ เจฎเฉเจฐเจพ เจฆเฉเจธเจค เจเจพเจซเจผเฉ เจนเฉ เจฏเฉเจจเจฟเจเจธ-เจเจชเจญเฉเจเจคเจพ: เจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจเจชเจฃเฉ เจเจช เจเฉฐเจธเจเจพเจฒ เจเจฐ เจธเจเจฆเจพ เจนเฉ MySQL, PHP เจ
เจคเฉ เจธเจงเจพเจฐเจจ เจธเฉเจเจฟเฉฐเจ เจเจฐเฉ nginx.
เจ
เจคเฉ เจเจธ เจเฉเจฒ เจเจธเจพเจฐเฉ เจฆเฉ เจธเจพเจงเจจเจพเจ เจจเฉเฉฐ เจธเจฎเจฐเจชเจฟเจค เจเฉฑเจ เจฆเจฐเจเจจ เจเจพเจ เจกเฉเจข เจตเฉเจฌเจธเจพเจเจเจพเจ เจนเจจ.
เจเฉเจจเจธเฉเจเจผ เจจเฉเฉฐ เจธเจฎเจฐเจชเจฟเจค เจเจนเจจเจพเจ เจธเจพเจเจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจเฉเจ เจเฉฐเจเจฃเจพเจ เจฆเฉ เจธเจฟเจเจฐ เจตเจฟเฉฑเจ เจฎเจเจผเจฌเฉเจคเฉ เจจเจพเจฒ เจฌเฉเจ เจฆเฉ เจนเฉเฅค เจเจน เจธเจพเจเจ เจเฉฑเจ เจเฉเจฐ-เจตเจชเจพเจฐเจ เจธเจฎเฉเจเจฟเจ
เจ เจนเฉ, เจชเจฐ เจเจฟเจธเฉ เจจเฉเฉฐ เจเจธ 'เจคเฉ เจนเจฎเจฒเจพ เจเจฐเจจ เจฆเฉ เจเจฆเจค เจชเฉ เจเจ เจนเฉเฅค เจเจฟ เจกเฉ.เจกเฉ.เจ., เจซเจฟเจฐ เจฌเจฐเฉเจ เจซเฉเจฐเจธ, เจซเจฟเจฐ เจเจน เจ
เจธเจผเจฒเฉเจฒ เจเจฟเฉฑเจชเจฃเฉเจเจ เจฒเจฟเจเจฆเฉ เจนเจจ เจ
เจคเฉ เจนเฉเจธเจเจฟเฉฐเจ เจ
เจคเฉ RKN เจจเฉเฉฐ เจเจพเจฒเฉเจนเจพเจ เจญเฉเจเจฆเฉ เจนเจจเฅค
เจ
เจเจพเจจเจ, เจธเจญ เจเฉเจ เจธเจผเจพเจเจค เจนเฉ เจเจฟเจ เจ
เจคเฉ เจเจน เจธเจผเจพเจเจคเฉ เจเฉฐเจเฉ เจจเจนเฉเจ เจจเจฟเจเจฒเฉ, เจ
เจคเฉ เจธเจพเจเจ เจจเฉ เจนเฉเจฒเฉ เจนเฉเจฒเฉ เจเฉเจ เจจเจคเฉเจเจฟเจเจ เจฆเฉเจเจ เจธเจฟเจเจฐเจฒเฉเจเจ เจฒเจพเจเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจกเจฃเจพ เจธเจผเฉเจฐเฉ เจเจฐ เจฆเจฟเฉฑเจคเจพ.
เจเจน เจเฉฑเจ เจเจนเจพเจตเจค เจธเฉ, เจซเจฟเจฐ เจเจกเจฎเจฟเจจ เจฆเฉ เจเจนเจพเจฃเฉเฅค
เจเจน เจธเฉเจฃ เจฆเจพ เจธเจฎเจพเจ เจจเฉเฉเฉ เจธเฉ เจเจฆเฉเจ เจซเจผเฉเจจ เจฆเฉ เจเฉฐเจเฉ เจตเฉฑเจเฉ: โเจธเฉเจจ, เจเฉ เจคเฉเจธเฉเจ เจฎเฉเจฐเฉ เจธเจฐเจตเจฐ เจตเฉฑเจฒ เจจเจนเฉเจ เจฆเฉเจเฉเจเฉ? เจเจน เจฎเฉเจจเฉเฉฐ เจเจพเจชเจฆเจพ เจนเฉ เจเจฟ เจฎเฉเจจเฉเฉฐ เจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจฎเฉเจ เจเจธ เจจเฉเฉฐ เจธเจพเจฌเจค เจจเจนเฉเจ เจเจฐ เจธเจเจฆเจพ, เจชเจฐ เจเจธ เจญเจพเจตเจจเจพ เจจเฉ เจฎเฉเจจเฉเฉฐ เจคเฉเจเฉ เจนเจซเจผเจคเฉ เจคเฉฑเจ เจจเจนเฉเจ เจเฉฑเจกเจฟเจเฅค เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจฎเฉเจฐเฉ เจฒเจ เจ
เจงเจฐเฉฐเจ เจฆเจพ เจเจฒเจพเจ เจเจฐเจตเจพเจเจฃ เจฆเจพ เจธเจฎเจพเจ เจนเฉ?"
เจเจธ เจคเฉเจ เจฌเจพเจ
เจฆ เจ
เฉฑเจงเฉ เจเฉฐเจเฉ เจฆเฉ เจเจฐเจเจพ เจนเฉเจ เจเจฟเจธ เจฆเจพ เจธเฉฐเจเฉเจช เจเจธ เจคเจฐเฉเจนเจพเจ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ:
- เจนเฉเจเจฟเฉฐเจ เจฒเจ เจฎเจฟเฉฑเจเฉ เจเจพเจซเจผเฉ เจเจชเจเจพเจ เจธเฉ;
- เจเฉฑเจ เจนเจฎเจฒเจพเจตเจฐ เจธเฉเจชเจฐ เจเจชเจญเฉเจเจคเจพ เจ เจงเจฟเจเจพเจฐ เจชเฉเจฐเจพเจชเจค เจเจฐ เจธเจเจฆเจพ เจนเฉ;
- เจนเจฎเจฒเจพ (เจเฉ เจเจน เจนเฉเจเจ เจธเฉ) เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจเจธ เจธเจพเจเจ 'เจคเฉ เจจเจฟเจธเจผเจพเจจเจพ เจฌเจฃเจพเจเจ เจเจฟเจ เจธเฉ;
- เจธเจฎเฉฑเจธเจฟเจ เจตเจพเจฒเฉ เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจ เฉเจ เจเฉเจคเจพ เจเจฟเจ เจนเฉ เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจธเจฎเจเจฃ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ เจเจฟ เจเฉ เจเฉเจ เจชเฉเจฐเจตเฉเจธเจผ เจธเฉ;
- เจนเฉเจ เจธเจพเจเจ เจเฉเจก เจ เจคเฉ เจกเฉเจเจพเจฌเฉเจธ เจจเฉเฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจจเจนเฉเจ เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค
เจเจเจฐเฉ เจฌเจฟเฉฐเจฆเฉ เจฌเจพเจฐเฉ.
เจธเจฟเจฐเจซ เจธเจซเฉเจฆ เจซเจฐเฉฐเจเจเจเจก เจเจเจชเฉ เจฆเฉเจจเฉเจ เจจเฉเฉฐ เจตเฉเจเจฆเจพ เจนเฉ. 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
เจธเฉเจเฉ เจฆเฉ เจธเจตเจพเจฒ เจตเจฟเฉฑเจ เจเฉฑเจ เจฆเฉเจเจพ เจธเจตเจพเจฒ เจเฉเฉเจฟเจ เจเจฟเจ เจนเฉ: "เจเจจเจเฉเจจเฉเจเจธ เจฆเจพ เจ เจเจฟเจนเจพ เจชเฉเจฐเจพเจเฉเจจ เจธเฉฐเจธเจเจฐเจฃ เจเจฟเจเจ?"
เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจธเจฟเจธเจเจฎ เจตเจฟเจธเจผเจตเจพเจธ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจจเจตเฉเจจเจคเจฎ เจธเฉฐเจธเจเจฐเจฃ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ:
$ 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;
//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 เจฎเฉเจเฉเจฆ เจนเฉ เจ เจคเฉ เจเจฎเฉเจฆ เจนเฉ เจเจฟ เจเจชเจเฉเจฎเจพเจเจเฉเจธเจผเจจ -เจ2 เจเจน เจธเจพเจจเฉเฉฐ เจฆเฉเจเฉ เจจเจนเฉเจ เจเจฐเฉเจเจพเฅค เจเจธเฉ เจธเจฎเฉเจ, เจเจฟเจเจเจเจฟ เจฎเฉเจจเฉเฉฐ เจจเจนเฉเจ เจชเจคเจพ เจเจฟ เจเจฟเจตเฉเจ 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;
}
เจฌเฉเจธเจผเฉฑเจ, เจเฉเจเจฐ เจเฉเจก เจจเฉเฉฐ เจเจธ เจนเจฟเฉฑเจธเฉ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฟเจ เจเจฟเจ เจนเฉ เจ เจคเฉ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจเฉเจธ 'เจเฉ':, เจซเจฟเจฐ เจฎเฉเจฐเจพ เจคเจฐเฉเจเจพ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเฉเจเจพเฅค
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;
เจเจ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจเฉฑเจฅเฉ เจเฉ เจนเฉ เจฐเจฟเจนเจพ เจนเฉ 'เจคเฉ เจเฉฑเจ เจจเจเจผเจฐ เจฎเจพเจฐเฉเจเฅค
เจจเจฟเจฐเจงเจพเจฐเจฟเจค เจเจชเจญเฉเจเจคเจพ เจเจเฉฐเจ'yandex/google:
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 ะฐ;
}
เจชเจพเจ เจตเจฟเฉฑเจ HTML- เจชเฉฐเจจเฉ เจฌเจฆเจฒเจฆเฉ เจนเจจ 'เจ' 'เจคเฉ 'เจ' ะธ 'เจ' 'เจคเฉ 'เจ':
sub_filter_once off;
sub_filter 'ะพ' $sign_o;
sub_filter 'ะฐ' $sign_a;
เจเจน เจธเจนเฉ เจนเฉ, เจธเจฟเจฐเจซ เจธเฉเจเจฎเจคเจพ เจเจน เจนเฉ 'a' ! = 'a' เจฌเจธ เจเฉฑเจฆเจพ 'เจ'! = 'เจ':
เจเจธ เจคเจฐเฉเจนเจพเจ, เจธเจฐเจ เจเฉฐเจเจจ เจฌเฉเจ, เจเจฎ 100% เจธเจฟเจฐเจฟเจฒเจฟเจ เจเฉเจเจธเจ เจฆเฉ เจฌเจเจพเจ, เจธเฉเจงเจฟเจ เจนเฉเจเจ เจเฉเฉเจพ เจฒเฉเจเจฟเจจ เจจเจพเจฒ เจชเจคเจฒเจพ เจชเฉเจฐเจพเจชเจค เจเจฐเจฆเฉ เจนเจจเฅค 'เจ' ะธ 'เจ'. เจฎเฉเจ เจเจธ เจเฉฑเจฒ 'เจคเฉ เจเจฐเจเจพ เจเจฐเจจ เจฆเฉ เจนเจฟเฉฐเจฎเจค เจจเจนเฉเจ เจเจฐเจฆเจพ เจเจฟ เจเจน เจเจธเจเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจชเฉเจฐเจญเจพเจตเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจเจน เจธเฉฐเจญเจพเจตเจจเจพ เจจเจนเฉเจ เจนเฉ เจเจฟ เจ
เฉฑเจเจฐเจพเจ เจฆเฉ เจ
เจเจฟเจนเฉ เจเฉเจฌเฉ เจเฉเจ เจจเจคเฉเจเจฟเจเจ เจตเจฟเฉฑเจ เจ
เจนเฉเจฆเจฟเจเจ 'เจคเฉ เจธเจเจพเจฐเจพเจคเจฎเจ เจชเฉเจฐเจญเจพเจต เจชเจพเจตเฉเจเฉ.
เจฎเฉเจ เจเฉ เจเจนเจฟ เจธเจเจฆเจพ เจนเจพเจ, เจเจฒเจชเจจเจพ เจตเจพเจฒเฉ เจฒเฉเจ.
เจนเจตเจพเจฒเฉ
เจธเจฐเฉเจค: www.habr.com