เดเดจเตเดฑเต เดเดฐเต เดธเตเดนเตเดคเตเดคเดฟเดจเต เดเดฑเตเดฑเดตเตเด เด เดธเตเดเดเดฐเดฎเดพเดฏ เดเดฐเต เดเดฅ เดธเดเดญเดตเดฟเดเตเดเต. เดเดจเตเดจเดพเตฝ เด เดคเต เดฎเดฟเดเดพเดฏเตเดฒเดฟเดจเต เดเดคเตเดฐ เด เดธเตเดเดเดฐเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเต, เด เดคเต เดเดจเตเดจเต เดธเดเดฌเดจเตเดงเดฟเดเตเดเดฟเดเดคเตเดคเตเดณเด เดตเดฟเดจเตเดฆเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต.
เดเดจเตเดฑเต เดธเตเดนเตเดคเตเดคเต เดธเดฎเตผเดคเตเดฅเดจเดพเดฃเตเดจเตเดจเต เดเดพเตป เดชเดฑเดฏเดฃเด เดฏเตเดฃเดฟเดเตเดธเต-เดเดชเดฏเตเดเตเดคเดพเดตเต: เดธเดฟเดธเตเดฑเตเดฑเด เดธเตเดตเดฏเด เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด เดเตเดฏเต, PHP เดเตเดเดพเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดเดฃเตเดเดพเดเตเดเตเด nginx.
เดจเดฟเตผเดฎเตเดฎเดพเดฃ เดเดชเดเดฐเดฃเดเตเดเตพเดเตเดเดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฐเต เดกเดธเดจเต เดเดจเตเดจเต เดเดจเตเดจเดฐ เดตเตเดฌเตโเดธเตเดฑเตเดฑเตเดเดณเตเด เด
เดฆเตเดฆเตเดนเดคเตเดคเดฟเดจเต เดเดฃเตเดเต.
เดเตเดฏเดฟเตปเดธเตเดเตพเดเตเดเดพเดฏเดฟ เดธเดฎเตผเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เด เดธเตเดฑเตเดฑเตเดเดณเดฟเดฒเตเดจเตเดจเต เดธเตเตผเดเตเดเต เดเดเตเดเดฟเดจเตเดเดณเตเดเต เดเตเดชเตเดชเดฟเตฝ เดเดฑเดเตเดเตเดจเดฟเตฝเดเตเดเตเดจเตเดจเต. เด เดธเตเดฑเตเดฑเต เดเดฐเต เดจเตเตบ-เดเตเดฎเตเดดเตโเดธเตเดฏเตฝ เดฑเดฟเดตเตเดฏเตเดตเดฑเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดฐเต เด
เดคเดฟเดจเต เดเดเตเดฐเดฎเดฟเดเตเดเตเดจเตเดจเดคเต เดถเตเดฒเดฎเดพเดเตเดเดฟ. เด
เดคเต DDoS, เดชเดฟเดจเตเดจเต เดเตเดฐเตเดฐเดฎเดพเดฏ เดฌเดฒเดชเตเดฐเดฏเตเดเด, เดคเตเดเตผเดจเตเดจเต เด
เดตเตผ เด
เดถเตเดฒเตเดฒ เดเดฎเดจเตเดฑเตเดเตพ เดเดดเตเดคเตเดเดฏเตเด เดนเตเดธเตเดฑเตเดฑเดฟเดเดเดฟเดจเตเด RKN เดจเตเด เด
เดงเดฟเดเตเดทเตเดชเดเตเดเตพ เด
เดฏเดฏเตเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เดชเตเดเตเดเตเดจเตเดจเต, เดเดฒเตเดฒเดพเด เดถเดพเดจเตเดคเดฎเดพเดฏเดฟ, เด เดถเดพเดจเตเดคเดค เดจเดฒเตเดฒเดคเดฒเตเดฒเตเดจเตเดจเต เดคเตเดณเดฟเดเตเดเต, เดธเตเดฑเตเดฑเต เดเตเดฐเดฎเตเดฃ เดคเดฟเดฐเดฏเตฝ เดซเดฒเดเตเดเดณเตเดเต เดฎเตเดเดณเดฟเดฒเต เดตเดฐเดฟเดเตพ เดเดชเตเดเตเดทเดฟเดเตเดเดพเตป เดคเตเดเดเตเดเดฟ.
เด
เดคเตเดฐเต เดเตเดฒเตเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดชเดฟเดจเตเดจเต เด
เดกเตเดฎเดฟเดจเตเดฑเต เดเดฅ เดคเดจเตเดจเต.
เดเดฑเดเตเดเดพเตป เดธเดฎเดฏเดฎเดพเดฏเดชเตเดชเตเตพ เดซเตเตบ เดฑเดฟเดเดเต เดเตเดฏเตเดคเต: โเดธเดพเตป, เดจเต เดเดจเตเดฑเต เดธเตเตผเดตเดฑเดฟเตฝ เดจเตเดเตเดเดฟเดฒเตเดฒเต? เดเดพเตป เดนเดพเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดเดคเดพเดฏเดฟ เดเดจเดฟเดเตเดเต เดคเตเดจเตเดจเตเดจเตเดจเต, เดเดจเดฟเดเตเดเต เด
เดคเต เดคเตเดณเดฟเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดชเดเตเดทเต เดฎเตเดจเตเดจเดพเด เดเดดเตเดเดฏเตเด เด เดคเตเดจเตเดจเตฝ เดเดจเตเดจเต เดตเดฟเดเตเดเตเดชเตเดฏเดฟเดเตเดเดฟเดฒเตเดฒ. เดเดฐเตเดชเดเตเดทเต เดเดจเดฟเดเตเดเต เดญเตเดฐเดฎเดพเดคเตเดฎเดเดคเดฏเตเดเตเดเต เดเดฟเดเดฟเดคเตเดธ เดฒเดญเดฟเดเตเดเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเต?"
เดคเตเดเตผเดจเตเดจเต เดจเดเดจเตเดจเดคเต เด
เดฐเดฎเดฃเดฟเดเตเดเตเตผ เดจเตเดฃเตเด เดเตผเดเตเดเดฏเดพเดฃเต, เด
เดคเดฟเดจเต เดเดเตเดเดจเต เดธเดเดเตเดฐเดนเดฟเดเตเดเดพเด:
- เดนเดพเดเตเดเดฟเดเดเดฟเดจเตเดณเตเดณ เดฎเดฃเตเดฃเต เดคเดฟเดเดเตเดเตเด เดซเดฒเดญเตเดฏเดฟเดทเตเด เดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต;
- เดเดฐเต เดเดเตเดฐเดฎเดฃเดเดพเดฐเดฟเดเตเดเต เดธเตเดชเตเดชเตผ เดฏเตเดธเตผ เด เดตเดเดพเดถเดเตเดเตพ เดจเตเดเดพเดจเดพเดเตเด;
- เดเดเตเดฐเดฎเดฃเด (เด เดคเต เดจเดเดจเตเดจเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ) เด เดธเตเดฑเตเดฑเดฟเดจเต เดชเตเดฐเดคเตเดฏเตเดเดฎเดพเดฏเดฟ เดฒเดเตเดทเตเดฏเด เดตเดเตเดเตเดณเตเดณเดคเดพเดฃเต;
- เดชเตเดฐเดถเตเดจเดฎเตเดณเตเดณ เดชเตเดฐเดฆเตเดถเดเตเดเตพ เดถเดฐเดฟเดฏเดพเดเตเดเดฟ, เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดจเตเดดเดเตเดเตเดเดฏเดฑเตเดฑเดฎเตเดฃเตเดเต เดเดจเตเดจเต เดจเดฟเดเตเดเตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต;
- เดธเตเดฑเตเดฑเต เดเตเดกเดฟเดจเตเดฏเตเด เดกเดพเดฑเตเดฑเดพเดฌเตเดธเตเดเดณเตเดฏเตเด เดนเดพเดเตเดเต เดฌเดพเดงเดฟเดเตเดเดฟเดฒเตเดฒ.
เด เดตเดธเดพเดจ เดชเตเดฏเดฟเดจเตเดฑเต เดธเดเดฌเดจเตเดงเดฟเดเตเดเต.
เดตเตเดฑเตเดฑเต เดซเตเดฐเดฃเตเดเตโเดเตปเดกเต เดเดชเดฟ เดฎเดพเดคเตเดฐเดฎเต เดฒเตเดเดคเตเดคเต เดจเตเดเตเดเต. http(เดเตพ) เดเดดเดฟเดเต เดฌเดพเดเตเดเตเตปเดกเตเดเดณเตเด เดซเตเดฐเดฃเตเดเตโเดเตปเดกเตเด เดคเดฎเตเดฎเดฟเตฝ เดเดฐเต เดเตเดฎเดพเดฑเตเดฑเดตเตเดฎเดฟเดฒเตเดฒ, เดเดชเดฏเตเดเตเดคเดพเดเตเดเตพ/เดชเดพเดธเตโเดตเตเดกเตเดเตพ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต, เดเตเดเดณเตเดจเตเดจเตเด เดเตเดฎเดพเดฑเตเดฑเด เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ. เดเดพเดฐเดจเดฟเดฑเดคเตเดคเดฟเดฒเตเดณเตเดณ เดตเดฟเดฒเดพเดธเดเตเดเดณเดฟเตฝ, 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?
- เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเต, เดเดคเต เดเดเตเดเดจเต เดเตเดฏเตเดฏเดฃเดฎเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดฒ!
- เดถเดฐเดฟ, เดเดฑเดเตเดเต ...
เดจเดฟเดเตเดเดฟเดเตเดธเต เดเดคเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดเดฏเตเด "-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 เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต -O2 เด เดคเต เดเดเตเดเดณเต เดเดชเดฆเตเดฐเดตเดฟเดเตเดเดฟเดฒเตเดฒ. เด เดคเต เดธเดฎเดฏเด, เดเดเตเดเดจเตเดฏเตเดจเตเดจเต เดเดจเดฟเดเตเดเดฑเดฟเดฏเดฟเดฒเตเดฒ ngx_dump_config เดชเตเดฐเตเดธเดธเต เดเตเดฏเตเดฏเดพเดตเตเดจเตเดจเดคเดพเดฃเต เดเตเดธเต 'เดเดฟ':, เดเดเตเดเตพ เด เดฌเตเดฒเตเดเตเดเดฟเดจเต เดตเดฟเดณเดฟเดเตเดเดฟเดฒเตเดฒ, เดเดจเตเดจเดพเตฝ เดเดคเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด เดเตเดธเต 'เดเดฟ':
เดเดจเตเดคเตเดเตเดฃเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต '-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- เดชเตเดเตเดเตพ เดฎเดพเดฑเตเดจเตเดจเต 'เด' เดเตบ 'o' ะธ 'เด' เดเตบ 'a':
sub_filter_once off;
sub_filter 'ะพ' $sign_o;
sub_filter 'ะฐ' $sign_a;
เดถเดฐเดฟเดฏเดพเดฃเต, เด เดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดธเตเดเตเดทเตเดฎเดค 'a' != 'a' เดชเตเดฒเต 'o' != 'o':
เด
เดเตเดเดจเต, เดธเตเตผเดเตเดเต เดเดเตเดเดฟเตป เดฌเตเดเตเดเตเดเตพเดเตเดเต เดธเดพเดงเดพเดฐเดฃ 100% เดธเดฟเดฑเดฟเดฒเดฟเดเต เดตเดพเดเดเดคเตเดคเดฟเดจเต เดชเดเดฐเด เดฒเดพเดฑเตเดฑเดฟเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดฒเดฏเดฟเดชเตเดชเดฟเดเตเด เดชเดฐเดฟเดทเตเดเดฐเดฟเดเตเด เดฎเดพเดฒเดฟเดจเตเดฏเดเตเดเตพ เดฒเดญเดฟเดเตเดเตเด. 'a' ะธ 'o'. เดเดคเต เดเดธเตโเดโเดเดฏเต เดเดเตเดเดจเต เดฌเดพเดงเดฟเดเตเดเตเดจเตเดจเต เดเดจเตเดจเต เดเตผเดเตเด เดเตเดฏเตเดฏเดพเตป เดเดพเตป เดงเตเดฐเตเดฏเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดชเดเตเดทเต เด
เดคเตเดคเดฐเด เด
เดเตเดทเดฐเดเตเดเดณเตเดเต เดเดฐเต เดเตเดเตเดเด เดคเดฟเดฐเดฏเตฝ เดซเดฒเดเตเดเดณเดฟเดฒเต เดธเตเดฅเดพเดจเดเตเดเดณเดฟเตฝ เดจเดฒเตเดฒ เดธเตเดตเดพเดงเตเดจเด เดเตเดฒเตเดคเตเดคเดพเตป เดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒ.
เดเดจเดฟเดเตเดเต เดเดจเตเดคเต เดชเดฑเดฏเดพเตป เดเดดเดฟเดฏเตเด, เดญเดพเดตเดจเดฏเตเดณเตเดณเดตเดฐเต.
เดฑเตเดซเดฑเตปเดธเตเดเตพ
เด
เดตเดฒเดเดฌเด: www.habr.com