{"id":28540,"date":"2022-12-01T01:26:23","date_gmt":"2022-11-30T17:26:23","guid":{"rendered":"http:\/\/lrxjmw.cn\/?p=28540"},"modified":"2022-12-01T01:26:45","modified_gmt":"2022-11-30T17:26:45","slug":"real-analyse-nginx-ngxtop","status":"publish","type":"post","link":"https:\/\/lrxjmw.cn\/real-analyse-nginx-ngxtop.html","title":{"rendered":"Ngxtop-Nginx\u65e5\u5fd7\u5b9e\u65f6\u5206\u6790\u5229\u5668"},"content":{"rendered":"\n\n\n
\u5bfc\u8bfb<\/td>\nngxtop\u5b9e\u65f6\u89e3\u6790nginx\u8bbf\u95ee\u65e5\u5fd7\uff0c\u5e76\u4e14\u5c06\u5904\u7406\u7ed3\u679c\u8f93\u51fa\u5230\u7ec8\u7aef\uff0c\u529f\u80fd\u7c7b\u4f3c\u4e8e\u7cfb\u7edf\u547d\u4ee4top\uff0c\u6240\u4ee5\u8fd9\u4e2a\u8f6f\u4ef6\u8d77\u540dngxtop\u3002\u6709\u4e86ngxtop\uff0c\u4f60\u53ef\u4ee5\u5b9e\u65f6\u4e86\u89e3\u5230\u5f53\u524dnginx\u7684\u8bbf\u95ee\u72b6\u51b5\uff0c\u518d\u4e5f\u4e0d\u9700\u8981tail\u65e5\u5fd7\u770b\u5c4f\u5e55\u5237\u65b0\uff0c\u7531\u4e8engxtop\u662fpython\u7f16\u5199\uff0c\u6211\u4eec\u4f7f\u7528pip\u5b89\u88c5\uff0c\u672c\u6587\u5148\u4ecb\u7ecdpip\u7684\u4e00\u4e9b\u7528\u6cd5\u3002<\/strong><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n

\"ngxtop-linuxprobe\"<\/a><\/p>\n

1\u3001Pip\u4ecb\u7ecd<\/strong><\/div>\n

Pip\u7c7b\u4f3cRedHat\u91cc\u9762\u7684yum\uff0c\u5b89\u88c5Python\u5305\u975e\u5e38\u65b9\u4fbf\u3002\u672c\u8282\u8be6\u7ec6\u4ecb\u7ecdpip\u7684\u5b89\u88c5\u3001\u4ee5\u53ca\u4f7f\u7528\u65b9\u6cd5\u3002<\/p>\n

Pip\u4e0b\u8f7d\u5730\u5740\uff1ahttps:\/\/pypi.python.org\/pypi\/pip\/8.1.2<\/a><\/p>\n

\u4e0b\u8f7d\u6700\u65b0\u7248\u7684pip\u4e0a\u4f20\u5230\u670d\u52a1\u5668\u7684\/usr\/local\/src\u76ee\u5f55\u4e0b<\/p>\n

cd \/usr\/local\/src\/\r\n\r\ntar zxvf pip-8.1.2.tar.gz\r\n\r\ncd pip-8.1.2\r\n\r\npython setup.py install<\/pre>\n

\u62a5\u9519\uff1a\u7f3a\u5c11\u6a21\u5757setuptools<\/p>\n

Traceback (most recent call last):<\/p>\n

File \"setup.py\", line 6, in <module><\/p>\n

from setuptools import setup, find_packages<\/p>\n

ImportError: No module named setuptools<\/p>\n

\u89e3\u51b3\uff1a\u5b89\u88c5setuptools\u6a21\u5757<\/p>\n

\u5730\u5740\uff1ahttps:\/\/pypi.python.org\/pypi\/setuptools<\/a><\/p>\n

\u4f7f\u7528\u547d\u4ee4\u76f4\u63a5\u5b89\u88c5setuptools\u6a21\u5757\uff1a<\/p>\n

wget https:\/\/bootstrap.pypa.io\/ez_setup.py -O - | python<\/pre>\n

\"8-31-1\"<\/a><\/p>\n

\u4e0a\u56fe\u53ef\u4ee5\u5b89\u88c5setuptools\u5df2\u7ecf\u6b63\u786e\u5b89\u88c5\uff0c\u7136\u540e\u91cd\u65b0\u5b89\u88c5pip<\/p>\n

\u5b89\u88c5\u5b8c\u6210\u5982\u4e0b\u56fe\uff1a<\/p>\n

\"8-31-2\"<\/a><\/p>\n

\u68c0\u6d4bpip\u662f\u5426\u5b89\u88c5\u6210\u529f\uff0c\u67e5\u770bpip\u7248\u672c\uff1a<\/p>\n

[root@zabbix pip-8.1.2]# pip -V<\/pre>\n

pip 8.1.2 from \/usr\/lib\/python2.6\/site-packages\/pip-8.1.2-py2.6.egg (python 2.6)<\/p>\n

2\u3001pip\u4f7f\u7528\u8be6\u89e3<\/strong><\/div>\n
2.1\u3001\u4f7f\u7528pip\u5b89\u88c5\u76f8\u5173\u8f6f\u4ef6<\/strong><\/span><\/div>\n
# pip install SomePackage\r\n\r\n[...]\r\n\r\nSuccessfully installed SomePackage<\/pre>\n
2.2\u3001\u4f7f\u7528pip\u67e5\u770b\u5df2\u5b89\u88c5\u7684\u5305<\/strong><\/span><\/div>\n
# pip show --files SomePackage\r\n\r\nName: SomePackage\r\n\r\nVersion: 1.0\r\n\r\nLocation: \/my\/env\/lib\/pythonx.x\/site-packages\r\n\r\nFiles:\r\n\r\n..\/somepackage\/__init__.py\r\n\r\n[...]<\/pre>\n
2.3\u3001\u4f7f\u7528pip\u68c0\u67e5\u90a3\u4e9b\u5305\u9700\u8981\u66f4\u65b0<\/strong><\/span><\/div>\n
pip list --outdated<\/pre>\n

\"8-31-3\"<\/a><\/p>\n

#\u53ef\u4ee5\u770b\u5230\u56fe\u4e2d\u6709\u4e00\u4e2a\u8b66\u544a\u4fe1\u606f\uff0c\u544a\u8bc9\u6211\u4eec\u7cfb\u7edf\u81ea\u5e26\u7684python\u5c06\u5728\u65b0\u7248\u7684pip\u5931\u53bb\u652f\u6301\uff0c\u5efa\u8bae\u5347\u7ea7python\u7248\u672c\u3002<\/p>\n

2.4\u3001\u4f7f\u7528pip\u5347\u7ea7\u8f6f\u4ef6\u5305<\/strong><\/span><\/div>\n
# pip install --upgrade SomePackage\r\n\r\n[...]\r\n\r\nFound existing installation: SomePackage 1.0\r\n\r\nUninstalling SomePackage:\r\n\r\nSuccessfully uninstalled SomePackage\r\n\r\nRunning setup.py install for SomePackage\r\n\r\nSuccessfully installed SomePackage<\/pre>\n
2.5\u3001\u4f7f\u7528pip\u5378\u8f7d\u8f6f\u4ef6\u5305<\/strong><\/span><\/div>\n
$ pip uninstall SomePackage\r\n\r\nUninstalling SomePackage:\r\n\r\n\/my\/env\/lib\/pythonx.x\/site-packages\/somepackage\r\n\r\nProceed (y\/n)? y\r\n\r\nSuccessfully uninstalled SomePackage<\/pre>\n
3\u3001pip\u5b9e\u6218<\/strong><\/div>\n
3.1\u3001\u4f7f\u7528pip\u5b89\u88c5\u548c\u5378\u8f7dredis<\/strong><\/span><\/div>\n
pip install redis<\/strong><\/pre>\n

\"8-31-4\"<\/a><\/p>\n

pip uninstall redis<\/strong><\/pre>\n

\"8-31-5\"<\/a><\/p>\n

3.2\u3001Pip\u53c2\u6570\u8be6\u89e3<\/strong><\/span><\/div>\n
# pip --help\r\n\r\nUsage:\r\n\r\npip <command> [options]\r\n\r\nCommands:\r\n\r\ninstall\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u5b89\u88c5\u5305.\r\n\r\nuninstall\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u5378\u8f7d\u5305.\r\n\r\nfreeze\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u6309\u7740\u4e00\u5b9a\u683c\u5f0f\u8f93\u51fa\u5df2\u5b89\u88c5\u5305\u5217\u8868\r\n\r\nlist\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u5217\u51fa\u5df2\u5b89\u88c5\u5305.\r\n\r\nshow\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u663e\u793a\u5305\u8be6\u7ec6\u4fe1\u606f.\r\n\r\nsearch \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u641c\u7d22\u5305\uff0c\u7c7b\u4f3cyum\u91cc\u7684search.\r\n\r\nwheel\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Build wheels from your requirements.\r\n\r\nzip\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u4e0d\u63a8\u8350. Zip individual packages.\r\n\r\nunzip\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u4e0d\u63a8\u8350. Unzip individual packages.\r\n\r\nbundle\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u4e0d\u63a8\u8350. Create pybundles.\r\n\r\nhelp\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u5f53\u524d\u5e2e\u52a9.\r\n\r\nGeneral Options:\r\n\r\n-h, --help\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u663e\u793a\u5e2e\u52a9.\r\n\r\n-v, --verbose\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u66f4\u591a\u7684\u8f93\u51fa\uff0c\u6700\u591a\u53ef\u4ee5\u4f7f\u75283\u6b21\r\n\r\n-V, --version\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u73b0\u5b9e\u7248\u672c\u4fe1\u606f\u7136\u540e\u9000\u51fa.\r\n\r\n-q, --quiet\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u6700\u5c11\u7684\u8f93\u51fa.\r\n\r\n--log-file <path>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u8986\u76d6\u7684\u65b9\u5f0f\u8bb0\u5f55verbose\u9519\u8bef\u65e5\u5fd7\uff0c\u9ed8\u8ba4\u6587\u4ef6\uff1a\/root\/.pip\/pip.log\r\n\r\n--log <path>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u4e0d\u8986\u76d6\u8bb0\u5f55verbose\u8f93\u51fa\u7684\u65e5\u5fd7.\r\n\r\n--proxy <proxy>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Specify a proxy in the form [user:passwd@]proxy.server:port.\r\n\r\n--timeout <sec>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u8fde\u63a5\u8d85\u65f6\u65f6\u95f4 (\u9ed8\u8ba415\u79d2).\r\n\r\n--exists-action <action>\u00a0\u00a0\u00a0 Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup.\r\n\r\n--cert <path>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u8bc1\u4e66.\r\n<\/pre>\n
4\u3001\u4f7f\u7528pip\u5b89\u88c5ngxtop<\/strong><\/div>\n
4.1\u3001ngxtop\u7b80\u4ecb<\/strong><\/span><\/div>\n

ngxtop\u5b9e\u65f6\u89e3\u6790nginx\u8bbf\u95ee\u65e5\u5fd7\uff0c\u5e76\u4e14\u5c06\u5904\u7406\u7ed3\u679c\u8f93\u51fa\u5230\u7ec8\u7aef\uff0c\u529f\u80fd\u7c7b\u4f3c\u4e8e\u7cfb\u7edf\u547d\u4ee4top\uff0c\u6240\u4ee5\u8fd9\u4e2a\u8f6f\u4ef6\u8d77\u540dngxtop\u3002\u6709\u4e86ngxtop\uff0c\u4f60\u53ef\u4ee5\u5b9e\u65f6\u4e86\u89e3\u5230\u5f53\u524dnginx\u7684\u8bbf\u95ee\u72b6\u51b5\uff0c\u518d\u4e5f\u4e0d\u9700\u8981tail\u65e5\u5fd7\u770b\u5c4f\u5e55\u5237\u65b0\u3002<\/p>\n

ngxtop\u9879\u76ee\u5730\u5740\uff1ahttps:\/\/github.com\/lebinh\/ngxtop<\/a><\/p>\n

4.2\u3001\u5b89\u88c5ngxtop<\/strong><\/span><\/div>\n

4.2.1\u3001pip\u5b89\u88c5<\/strong><\/p>\n

pip install ngxtop<\/pre>\n

\"8-31-6\"<\/a><\/p>\n

#\u770b\u5230\u4e0a\u56fe\u8868\u793a\u5df2\u7ecf\u5b89\u88c5\u6210\u529f<\/p>\n

4.2.2\u3001\u6e90\u7801\u5b89\u88c5ngxtop<\/strong><\/p>\n

pip uninstall ngxtop<\/pre>\n

#\u5982\u679c\u5df2\u7ecfpip\u5b89\u88c5<\/p>\n

cd \/usr\/loca\/src\r\n\r\nwget https:\/\/github.com\/lebinh\/ngxtop\/archive\/master.zip -O ngxtop-master.zip\r\n\r\nunzip ngxtop-master.zip && cd ngxtop-master\r\n\r\npython setup.py install<\/pre>\n

\"8-31-7\"<\/a><\/p>\n

#\u770b\u5230\u4e0a\u56fe\u63d0\u793a\u8868\u793angxtop\u5df2\u7ecf\u5b89\u88c5\u6210\u529f<\/p>\n

4.3\u3001ngxtop\u4f7f\u7528\u8be6\u89e3<\/strong><\/span><\/div>\n
# ngxtop --help\r\n\r\nngxtop - ad-hoc query for nginx access log.\r\n\r\nUsage:\r\n\r\nngxtop [options]\r\n\r\nngxtop [options] (print|top|avg|sum) <var> ...\r\n\r\nngxtop info\r\n\r\nngxtop [options] query <query> ...\r\n\r\nOptions:\r\n\r\n-l <file>, --access-log <file>\u00a0 \u9700\u8981\u5206\u6790\u7684\u8bbf\u95ee\u65e5\u5fd7\r\n\r\n-f <format>, --log-format <format>\u00a0 log_format\u6307\u4ee4\u6307\u5b9a\u7684\u65e5\u5fd7\u683c\u5f0f [\u9ed8\u8ba4: combined]\r\n\r\n--no-follow\u00a0 ngxtop default behavior is to ignore current lines in log\r\n\r\nand only watch for new lines as they are written to the access log.\r\n\r\nUse this flag to tell ngxtop to process the current content of the access log instead.\r\n\r\n-t <seconds>, --interval <seconds>\u00a0 report interval when running in follow mode [default: 2.0]\r\n\r\n-g <var>, --group-by <var>\u00a0 \u6839\u636e\u53d8\u91cf\u5206\u7ec4 [\u9ed8\u8ba4: request_path]\r\n\r\n-w <var>, --having <expr>\u00a0 having clause [default: 1]\r\n\r\n-o <var>, --order-by <var>\u00a0 \u6392\u5e8f [\u9ed8\u8ba4: count]\r\n\r\n-n <number>, --limit <number>\u00a0 \u663e\u793a\u7684\u6761\u6570 [default: 10]\r\n\r\n-a <exp> ..., --a <exp> ...\u00a0 add exp (must be aggregation exp: sum, avg, min, max, etc.) into output\r\n\r\n-v, --verbose\u00a0 \u66f4\u591a\u7684\u8f93\u51fa\r\n\r\n-d, --debug\u00a0 print every line and parsed record\r\n\r\n-h, --help\u00a0 \u5f53\u524d\u5e2e\u52a9\u4fe1\u606f.\r\n\r\n--version\u00a0 \u8f93\u51fa\u7248\u672c\u4fe1\u606f.\r\n\r\n\u9ad8\u7ea7\u9009\u9879:\r\n\r\n-c <file>, --config <file>\u00a0 \u8fd0\u884cngxtop\u89e3\u6790nginx\u914d\u7f6e\u6587\u4ef6\r\n\r\n-i <filter-expression>, --filter <filter-expression>\u00a0 filter in, records satisfied given expression are processed.\r\n\r\n-p <filter-expression>, --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase.\r\n\r\n\u8303\u4f8b:\r\n\r\nAll examples read nginx config file for access log location and format.\r\n\r\nIf you want to specify the access log file and \/ or log format, use the -f and -a options.\r\n\r\n\"top\" like view of nginx requests\r\n\r\n$ ngxtop\r\n\r\n404\u524d\u5341\u7684\u8bf7\u6c42\r\n\r\n$ ngxtop top request_path --filter 'status == 404'\r\n\r\n\u603b\u6d41\u91cf\u524d\u5341\u7684\u8bf7\u6c42\r\n\r\n$ ngxtop --order-by 'avg(bytes_sent) * count'\r\n\r\n\u8bbf\u95ee\u91cf\u524d\u5341\u7684ip\u5730\u5740\r\n\r\n$ ngxtop --group-by remote_addr\r\n\r\n\u8f93\u51fa400\u4ee5\u4e0a\u72b6\u6001\u5417\u7684\u8bf7\u6c42\u4ee5\u53ca\u8bf7\u6c42\u6765\u6e90\r\n\r\n$ ngxtop -i 'status >= 400' print request status http_referer\r\n\r\nAverage body bytes sent of 200 responses of requested path begin with 'foo':\r\n\r\n$ ngxtop avg bytes_sent --filter 'status == 200 and request_path.startswith(\"foo\")'\r\n\r\n\u4f7f\u7528common\u65e5\u5fd7\u683c\u5f0f\u5206\u6790\u8fdc\u7a0b\u670d\u52a1\u5668Apache\u8bbf\u95ee\u65e5\u5fd7<\/pre>\n
$ ssh remote tail -f \/var\/log\/apache2\/access.log | ngxtop -f common<\/pre>\n
5\u3001ngxtop\u4f7f\u7528\u5b9e\u4f8b<\/strong><\/div>\n
5.1\u3001\u5b9e\u65f6\u72b6\u6001<\/strong><\/span><\/div>\n
ngxtop -c \/opt\/nginx\/conf\/nginx.conf<\/pre>\n
5.2\u3001\u8bbf\u95ee\u524d\u51e0\u7684IP<\/strong><\/span><\/div>\n
ngxtop -c \/opt\/nginx\/conf\/nginx.conf top remote_addr<\/pre>\n
5.3\u3001\u663e\u793a\u72b6\u6001\u7801\u4e3a404\u7684\u8bf7\u6c42<\/strong><\/span><\/div>\n
ngxtop -i 'status == 404' print request status<\/pre>\n
5.4\u3001\u663e\u793a\u524d\u4e8c\u5341\u6700\u9891\u7e41\u7684\u8bf7\u6c42<\/strong><\/span><\/div>\n
ngxtop -n 20<\/pre>\n
5.5\u3001\u4f7f\u7528\u666e\u901a\u683c\u5f0f\u4ece\u8fdc\u7a0b\u670d\u52a1\u5668\u89e3\u6790apache\u65e5\u5fd7<\/strong><\/span><\/div>\n
ssh user@remote_server tail -f \/var\/log\/apache2\/access.log | ngxtop -f common<\/pre>\n
6\u3001\u6ce8\u610f\u4e8b\u9879<\/strong><\/div>\n
1\u3001ngxtop\u5355\u6761\u547d\u4ee4\u65e0\u6cd5\u6267\u884c<\/strong><\/span><\/div>\n

\"8-31-8\"<\/a><\/p>\n

\u62a5\u9519\u610f\u601d\u662f\u8bf4ngxin\u6267\u884c\u6587\u4ef6\u8981\u52a0\u5230PATH\u8def\u5f84\u4e2d\uff0c\u52a0\u8f6f\u94fe\u63a5<\/p>\n

ln -s \/opt\/ngixn\/sbin\/nginx \/sbin<\/pre>\n

#\u4fee\u6539\u73af\u5883\u53d8\u91cf<\/p>\n

# vim \/etc\/profile\r\n\r\nexport PATH=$PATH:\/opt\/nginx\/sbin\r\n\r\nsource \/etc\/profile<\/pre>\n

\u672c\u6587\u539f\u521b\u5730\u5740\uff1ahttp:\/\/http:\/\/lrxjmw.cn\/real-analyse-nginx-ngxtop.html <\/a>\u4f5c\u8005\uff1a\u738b\u8f89\uff0c\u5ba1\u6838\u5458\uff1a\u51af\u632f\u534e<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"

\u5bfc\u8bfb ngxtop\u5b9e\u65f6\u89e3\u6790nginx\u8bbf\u95ee\u65e5\u5fd7\uff0c\u5e76\u4e14\u5c06\u5904\u7406\u7ed3\u679c\u8f93\u51fa\u5230\u7ec8\u7aef\uff0c\u529f\u80fd\u7c7b\u4f3c\u4e8e\u7cfb\u7edf\u547d\u4ee4top\uff0c\u6240\u4ee5\u8fd9\u4e2a\u8f6f\u4ef6 […]<\/p>\n","protected":false},"author":63,"featured_media":28557,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[55],"tags":[],"class_list":["post-28540","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-thread"],"acf":[],"_links":{"self":[{"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/posts\/28540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/comments?post=28540"}],"version-history":[{"count":9,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/posts\/28540\/revisions"}],"predecessor-version":[{"id":51370,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/posts\/28540\/revisions\/51370"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/media\/28557"}],"wp:attachment":[{"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/media?parent=28540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/categories?post=28540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lrxjmw.cn\/wp-json\/wp\/v2\/tags?post=28540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}