[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fbase":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fbase":832,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fbase":852},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":13,"pinned":14,"draft":14,"body":15,"seo":828,"stem":829,"id":830,"extension":831},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fbase","Nginx 核心概念","Nginx 是一款高性能的 HTTP 和反向代理服务器。学习路径见 运维导读。它的强大并发能力与灵活的扩展性根植于少数几个核心设计。理解这些底层原理，后续的配置、调优和排障都会变得通透。","技能小册",[12],"nginx","2023-04-03",false,{"type":16,"value":17,"toc":815},"minimark",[18,22,32,37,40,70,75,83,87,90,112,117,131,135,160,166,170,199,202,206,260,279,283,286,458,484,488,491,499,608,611,615,670,673,725,728,761,764,811],[19,20,8],"h1",{"id":21},"nginx-核心概念",[23,24,25,26,31],"p",{},"Nginx 是一款高性能的 HTTP 和反向代理服务器。学习路径见 ",[27,28,30],"a",{"href":29},"\u002Fknowledge\u002Fbooklet\u002Fuphold","运维导读","。它的强大并发能力与灵活的扩展性根植于少数几个核心设计。理解这些底层原理，后续的配置、调优和排障都会变得通透。",[33,34,36],"h3",{"id":35},"_1-主进程master与工作进程worker模型","1. 主进程（Master）与工作进程（Worker）模型",[23,38,39],{},"Nginx 启动后会生成两种进程：",[41,42,43,58],"ul",{},[44,45,46,50,53,54,57],"li",{},[47,48,49],"strong",{},"Master 进程",[51,52],"br",{},"\n以 root 身份运行，负责读取和验证配置、绑定端口、创建 Socket，并管理 Worker 进程的生命周期（启动、停止、重载配置）。它",[47,55,56],{},"不处理任何客户端请求","，仅在 Worker 意外退出时重新拉起。",[44,59,60,63,65,66,69],{},[47,61,62],{},"Worker 进程",[51,64],{},"\n由 Master fork 出来的子进程，以低权限用户（如 www-data）运行，",[47,67,68],{},"真正执行所有请求处理","——包括接收连接、读取数据、处理逻辑、返回响应等。每个 Worker 都是单线程的，但能以异步非阻塞方式处理成千上万个并发连接。",[23,71,72],{},[47,73,74],{},"为什么 Worker 数量通常设为 CPU 核心数？",[23,76,77,78,82],{},"每一个 Worker 都是一个独立的事件处理循环，绑定到特定 CPU 核心上可以减少进程切换导致的缓存失效和上下文开销，最大化 CPU 利用效率。如果把 Worker 数设得远大于核心数，多余的进程会争抢 CPU，反而增加调度成本；而设得太少则无法充分利用多核并行能力。因此，",[79,80,81],"code",{},"worker_processes auto;"," 会自动匹配 CPU 核数，是最推荐的实践。",[33,84,86],{"id":85},"_2-事件驱动与非阻塞-io","2. 事件驱动与非阻塞 I\u002FO",[23,88,89],{},"传统 Web 服务器（如 Apache 的 prefork 模式）常采用“一个连接一个进程\u002F线程”的模型，当并发连接数上升时，大量进程\u002F线程会耗尽内存和 CPU 资源。Nginx 则完全不同。",[41,91,92,100],{},[44,93,94,97,99],{},[47,95,96],{},"非阻塞 I\u002FO",[51,98],{},"\nWorker 在收到请求后，如果某个操作（如读取磁盘文件、等待后端响应）会阻塞，它会立即返回并处理下一个任务，绝不原地等待。这种“忙则跳过，稍后处理”的方式，是一个 Worker 能同时维护数以万计连接的关键。",[44,101,102,105,107,108,111],{},[47,103,104],{},"I\u002FO 多路复用与 epoll",[51,106],{},"\nLinux 下，Nginx 使用 ",[79,109,110],{},"epoll"," 这种事件通知机制：Worker 把所有关注的 socket 注册到 epoll 内核事件表中，然后进入事件循环。当某个 socket 上有数据可读或可写时，内核会主动通知 Worker，Worker 这才去处理就绪事件。epoll 采用红黑树+链表结构，能高效管理数十万的文件描述符，且只返回活跃连接，不会浪费时间去轮询空闲连接。",[23,113,114],{},[47,115,116],{},"为什么 Nginx 能轻松应对高并发？",[41,118,119,122,125,128],{},[44,120,121],{},"单进程异步非阻塞模式 + epoll，使得一个 Worker 就能扛住数万并发连接。",[44,123,124],{},"每个连接仅占用极少量内存（通常几 KB），随并发数增加的内存增长极其平缓。",[44,126,127],{},"Worker 之间相互独立，没有锁竞争，利用多核即可线性扩展处理能力。",[44,129,130],{},"配合合理的系统参数（如文件描述符限制、TCP 调优），单机承载数十万长连接（如 WebSocket）也很常见。",[33,132,134],{"id":133},"_3-正向代理-vs-反向代理","3. 正向代理 vs 反向代理",[41,136,137,149],{},[44,138,139,142,144,145,148],{},[47,140,141],{},"正向代理（Forward Proxy）",[51,143],{},"\n代理",[47,146,147],{},"客户端","，帮助内部网络用户访问外部资源。客户端明确知道代理的存在，并将请求发往代理，由代理转发给目标服务器。应用场景包括：企业内网统一出口、访问控制、缓存外网内容、爬虫代理池等。对服务端而言，看到的请求始终来自代理服务器，而非真实客户端。",[44,150,151,154,144,156,159],{},[47,152,153],{},"反向代理（Reverse Proxy）",[51,155],{},[47,157,158],{},"服务端","，作为外部客户端访问内部服务器的统一入口。客户端以为代理就是真正的应用服务器，完全不知道后端的实际结构。Nginx 就是经典的反向代理软件，常用于暴露内网服务、实现负载均衡和缓存等。",[23,161,162,165],{},[47,163,164],{},"区别","：正向代理隐藏客户端，反向代理隐藏服务端；正向代理服务于客户端，反向代理服务于服务端。",[33,167,169],{"id":168},"_4-负载均衡与动静分离","4. 负载均衡与动静分离",[41,171,172,186],{},[44,173,174,177,179,180,182,185],{},[47,175,176],{},"负载均衡",[51,178],{},"\nNginx 将收到的请求按照预设策略（轮询、加权轮询、IP Hash、最少连接等）分发给多台后端服务器，并提供健康检查和故障转移。",[51,181],{},[47,183,184],{},"解决的问题","：单点故障、单机性能瓶颈，实现水平扩展和高可用。",[44,187,188,191,193,194,196,198],{},[47,189,190],{},"动静分离",[51,192],{},"\n将动态请求（如 PHP、JSP、API 调用）转发给应用服务器（Tomcat、Gunicorn 等），而静态资源（图片、CSS、JS、HTML 等）则由 Nginx 直接从本地磁盘或内存中返回。",[51,195],{},[47,197,184],{},"：让后端应用服务器专注于动态逻辑，避免浪费资源处理静态文件；静态资源由 Nginx 高效提供，整体响应速度和吞吐量大幅提升。",[23,200,201],{},"两者常同时使用：反向代理集群配合动静分离，可以使架构既稳健又高效。",[33,203,205],{"id":204},"_5-常用应用场景","5. 常用应用场景",[41,207,208,224,232,240,248],{},[44,209,210,213,215,216,219,220,223],{},[47,211,212],{},"静态资源服务器",[51,214],{},"\n直接提供静态文件服务，充分利用 ",[79,217,218],{},"sendfile","、",[79,221,222],{},"aio"," 等零拷贝技术，性能极高，适合存放图片、视频、前端包等。",[44,225,226,229,231],{},[47,227,228],{},"反向代理网关",[51,230],{},"\n将请求路由到内部不同服务，对外暴露统一域名和入口，隐藏后端拓扑，易于扩展和安全加固。",[44,233,234,237,239],{},[47,235,236],{},"HTTPS 终结（SSL\u002FTLS Offloading）",[51,238],{},"\n在 Nginx 侧完成证书解析和加解密，后端服务器只需处理明文 HTTP 请求，大幅降低应用服务器的 CPU 压力，也便于集中管理证书。",[44,241,242,245,247],{},[47,243,244],{},"微服务入口 \u002F API 网关",[51,246],{},"\n作为微服务体系的边缘路由层，可以整合认证、限流、灰度发布、请求改写等功能，结合 Nginx Plus 或 OpenResty 可实现更复杂的动态路由。",[44,249,250,253,255,256,259],{},[47,251,252],{},"缓存加速",[51,254],{},"\n通过 ",[79,257,258],{},"proxy_cache"," 等模块，将后端响应（页面、API 数据）缓存到内存或磁盘，下次相同请求直接命中缓存，能显著削减上游负载并降低响应延迟，常用作 CDN 边缘节点的核心组件。",[23,261,262,263,266,267,270,271,274,275,278],{},"把这些核心概念串联起来：",[47,264,265],{},"Master-Worker 进程模型","提供了稳固的管理基础；",[47,268,269],{},"事件驱动与非阻塞 I\u002FO"," 铸就了单机海量并发的灵魂；",[47,272,273],{},"反向代理、负载均衡、动静分离","则构建出伸缩自如的服务架构；而这些特性最终落地到",[47,276,277],{},"静态资源、网关、HTTPS 终结、微服务入口、缓存加速","等真实场景，让 Nginx 成为互联网基础设施中不可或缺的一环。",[33,280,282],{"id":281},"_6-一个最小可用的配置示例","6. 一个最小可用的配置示例",[23,284,285],{},"把上面几个概念放进一份真实配置里，能更直观地看出它们如何配合：",[287,288,292],"pre",{"className":289,"code":290,"language":12,"meta":291,"style":291},"language-nginx shiki shiki-themes material-theme-lighter github-light github-dark","worker_processes auto;        # Master：按 CPU 核数自动派生 Worker\n\nevents {\n    use epoll;                 # Linux 下的 I\u002FO 多路复用\n    worker_connections 4096;   # 单 Worker 最大并发连接数\n}\n\nhttp {\n    upstream backend {         # 负载均衡：多台后端\n        server 127.0.0.1:3001;\n        server 127.0.0.1:3002;\n    }\n\n    server {\n        listen 80;\n        server_name example.com;\n\n        location \u002Fapi\u002F {       # 反向代理 + 负载均衡\n            proxy_pass http:\u002F\u002Fbackend;\n            proxy_set_header Host $host;\n        }\n\n        location \u002F {            # 动静分离：静态资源直接由 Nginx 提供\n            root \u002Fdata\u002Fwww;\n            index index.html;\n        }\n    }\n}\n","",[79,293,294,302,309,315,321,327,333,338,344,350,356,362,368,373,379,385,391,396,402,408,414,420,425,431,437,443,448,453],{"__ignoreMap":291},[295,296,299],"span",{"class":297,"line":298},"line",1,[295,300,301],{},"worker_processes auto;        # Master：按 CPU 核数自动派生 Worker\n",[295,303,305],{"class":297,"line":304},2,[295,306,308],{"emptyLinePlaceholder":307},true,"\n",[295,310,312],{"class":297,"line":311},3,[295,313,314],{},"events {\n",[295,316,318],{"class":297,"line":317},4,[295,319,320],{},"    use epoll;                 # Linux 下的 I\u002FO 多路复用\n",[295,322,324],{"class":297,"line":323},5,[295,325,326],{},"    worker_connections 4096;   # 单 Worker 最大并发连接数\n",[295,328,330],{"class":297,"line":329},6,[295,331,332],{},"}\n",[295,334,336],{"class":297,"line":335},7,[295,337,308],{"emptyLinePlaceholder":307},[295,339,341],{"class":297,"line":340},8,[295,342,343],{},"http {\n",[295,345,347],{"class":297,"line":346},9,[295,348,349],{},"    upstream backend {         # 负载均衡：多台后端\n",[295,351,353],{"class":297,"line":352},10,[295,354,355],{},"        server 127.0.0.1:3001;\n",[295,357,359],{"class":297,"line":358},11,[295,360,361],{},"        server 127.0.0.1:3002;\n",[295,363,365],{"class":297,"line":364},12,[295,366,367],{},"    }\n",[295,369,371],{"class":297,"line":370},13,[295,372,308],{"emptyLinePlaceholder":307},[295,374,376],{"class":297,"line":375},14,[295,377,378],{},"    server {\n",[295,380,382],{"class":297,"line":381},15,[295,383,384],{},"        listen 80;\n",[295,386,388],{"class":297,"line":387},16,[295,389,390],{},"        server_name example.com;\n",[295,392,394],{"class":297,"line":393},17,[295,395,308],{"emptyLinePlaceholder":307},[295,397,399],{"class":297,"line":398},18,[295,400,401],{},"        location \u002Fapi\u002F {       # 反向代理 + 负载均衡\n",[295,403,405],{"class":297,"line":404},19,[295,406,407],{},"            proxy_pass http:\u002F\u002Fbackend;\n",[295,409,411],{"class":297,"line":410},20,[295,412,413],{},"            proxy_set_header Host $host;\n",[295,415,417],{"class":297,"line":416},21,[295,418,419],{},"        }\n",[295,421,423],{"class":297,"line":422},22,[295,424,308],{"emptyLinePlaceholder":307},[295,426,428],{"class":297,"line":427},23,[295,429,430],{},"        location \u002F {            # 动静分离：静态资源直接由 Nginx 提供\n",[295,432,434],{"class":297,"line":433},24,[295,435,436],{},"            root \u002Fdata\u002Fwww;\n",[295,438,440],{"class":297,"line":439},25,[295,441,442],{},"            index index.html;\n",[295,444,446],{"class":297,"line":445},26,[295,447,419],{},[295,449,451],{"class":297,"line":450},27,[295,452,367],{},[295,454,456],{"class":297,"line":455},28,[295,457,332],{},[23,459,460,463,464,467,468,471,472,475,476,479,480,483],{},[79,461,462],{},"worker_processes auto"," 决定并发上限的“骨架”，",[79,465,466],{},"events"," 块选择事件模型，",[79,469,470],{},"upstream"," + ",[79,473,474],{},"proxy_pass"," 实现反向代理与负载均衡，",[79,477,478],{},"location \u002F"," 与 ",[79,481,482],{},"location \u002Fapi\u002F"," 的分工则体现了动静分离。",[33,485,487],{"id":486},"_7-配置层级与继承关系","7. 配置层级与继承关系",[23,489,490],{},"Nginx 配置采用嵌套的块结构，子级会继承父级的多数指令，也可以显式覆盖：",[287,492,497],{"className":493,"code":495,"language":496},[494],"language-text","main（全局）\n └─ http\n     └─ server（虚拟主机）\n         └─ location（路径匹配）\n","text",[79,498,495],{"__ignoreMap":291},[500,501,502,518],"table",{},[503,504,505],"thead",{},[506,507,508,512,515],"tr",{},[509,510,511],"th",{},"层级",[509,513,514],{},"常见指令",[509,516,517],{},"说明",[519,520,521,542,563,584],"tbody",{},[506,522,523,529,539],{},[524,525,526],"td",{},[79,527,528],{},"main",[524,530,531,219,534,219,537],{},[79,532,533],{},"worker_processes",[79,535,536],{},"error_log",[79,538,466],{},[524,540,541],{},"进程级、影响整个 Nginx 实例",[506,543,544,549,560],{},[524,545,546],{},[79,547,548],{},"http",[524,550,551,219,554,219,557],{},[79,552,553],{},"include mime.types",[79,555,556],{},"gzip",[79,558,559],{},"log_format",[524,561,562],{},"影响所有虚拟主机",[506,564,565,570,581],{},[524,566,567],{},[79,568,569],{},"server",[524,571,572,219,575,219,578],{},[79,573,574],{},"listen",[79,576,577],{},"server_name",[79,579,580],{},"ssl_certificate",[524,582,583],{},"一个虚拟主机（站点）",[506,585,586,591,605],{},[524,587,588],{},[79,589,590],{},"location",[524,592,593,596,597,219,600,219,602],{},[79,594,595],{},"root","\u002F",[79,598,599],{},"alias",[79,601,474],{},[79,603,604],{},"try_files",[524,606,607],{},"具体路径的处理规则",[23,609,610],{},"理解“继承 + 覆盖”后，很多“同一个指令在不同 location 表现不一致”的疑惑就能自行排查——去检查是否被更内层的同名指令覆盖了。",[612,613,614],"h2",{"id":614},"常见坑",[41,616,617,626,643,657],{},[44,618,619,622,623,625],{},[47,620,621],{},"把 Worker 数设得远大于 CPU 核心数","：以为“越多越快”，实际会增加上下文切换开销，",[79,624,462],{}," 通常已是最优。",[44,627,628,634,635,638,639,642],{},[47,629,630,633],{},[79,631,632],{},"worker_connections"," 设置过低","：高并发场景下连接数很快打满，报 ",[79,636,637],{},"worker_connections are not enough","，需结合系统 ",[79,640,641],{},"ulimit -n"," 一起调大。",[44,644,645,651,652,656],{},[47,646,647,648,650],{},"误以为 ",[79,649,478],{}," 会匹配所有请求并覆盖更具体的规则","：Nginx 按最长前缀\u002F优先级匹配，不是从上到下的第一条命中即用，具体优先级规则见 ",[27,653,655],{"href":654},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fcore","核心模块","。",[44,658,659,665,666,669],{},[47,660,661,662],{},"修改配置后忘记 ",[79,663,664],{},"reload","：",[79,667,668],{},"nginx -s reload"," 才会让 Worker 优雅地按新配置重启，直接编辑文件不会立即生效。",[612,671,672],{"id":672},"最佳实践",[674,675,676,686,692,704],"ol",{},[44,677,678,679,682,683,685],{},"上线前始终执行 ",[79,680,681],{},"nginx -t"," 验证语法，再执行 ",[79,684,668],{},"，避免语法错误导致服务中断。",[44,687,688,689,691],{},"静态资源与反向代理分离到不同的 ",[79,690,590],{},"，让 Nginx 专注做它最擅长的事（高效文件 I\u002FO 与事件驱动转发）。",[44,693,694,695,698,699,703],{},"生产环境关闭 ",[79,696,697],{},"server_tokens","（见 ",[27,700,702],{"href":701},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fse","安全基础","），减少版本信息暴露。",[44,705,706,707,596,710,712,713,715,716,719,720,724],{},"结合 ",[79,708,709],{},"access_log",[79,711,536],{}," 的 ",[79,714,559],{}," 记录 ",[79,717,718],{},"$upstream_response_time","，为后续性能排查预留数据（见 ",[27,721,723],{"href":722},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fseror","故障排查","）。",[612,726,727],{"id":727},"延伸阅读",[41,729,730,743,750,755],{},[44,731,732,665,735,737,738,479,740,742],{},[27,733,734],{"href":654},"核心模块与常用指令",[79,736,590],{}," 匹配优先级、",[79,739,595],{},[79,741,599],{}," 等细节。",[44,744,745,749],{},[27,746,748],{"href":747},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fconfig","配置详解","：更完整的指令与场景化配置。",[44,751,752,754],{},[27,753,702],{"href":701},"：隐藏版本、限流、HTTPS 安全头。",[44,756,757,760],{},[27,758,759],{"href":722},"常见故障排查思路","：502\u002F504\u002F403\u002F404 等真实案例排查步骤。",[612,762,763],{"id":763},"参考文献",[500,765,766,775],{},[503,767,768],{},[506,769,770,773],{},[509,771,772],{},"资料",[509,774,517],{},[519,776,777,790,802],{},[506,778,779,787],{},[524,780,781],{},[27,782,786],{"href":783,"rel":784},"https:\u002F\u002Fnginx.org\u002Fen\u002Fdocs\u002F",[785],"nofollow","nginx 文档",[524,788,789],{},"官方",[506,791,792,799],{},[524,793,794],{},[27,795,798],{"href":796,"rel":797},"https:\u002F\u002Fnginx.org\u002Fen\u002Fdocs\u002Fbeginners_guide.html",[785],"Beginner’s Guide",[524,800,801],{},"入门",[506,803,804,808],{},[524,805,806],{},[27,807,30],{"href":29},[524,809,810],{},"本目录路径",[812,813,814],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":291,"searchDepth":304,"depth":304,"links":816},[817,818,819,820,821,822,823,824,825,826,827],{"id":35,"depth":311,"text":36},{"id":85,"depth":311,"text":86},{"id":133,"depth":311,"text":134},{"id":168,"depth":311,"text":169},{"id":204,"depth":311,"text":205},{"id":281,"depth":311,"text":282},{"id":486,"depth":311,"text":487},{"id":614,"depth":304,"text":614},{"id":672,"depth":304,"text":672},{"id":727,"depth":304,"text":727},{"id":763,"depth":304,"text":763},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fuphold\u002FNginx\u002Fbase","knowledge\u002Fknowledge\u002Fbooklet\u002Fuphold\u002FNginx\u002Fbase.md","md",{"items":833},[834,836,839,842,844,848],{"path":701,"title":702,"description":835,"category":10,"score":329},"Nginx 作为流量的总入口，安全配置是防线第一关。以下从六个基础维度加固你的服务，既实用又立竿见影。",{"path":747,"title":837,"description":838,"category":10,"score":329},"配置文件结构与语法","下面我们深入到 Nginx 的配置核心——配置文件的结构、语法和变量系统。这一部分是你驾驭 Nginx 的“语法手册”。",{"path":654,"title":840,"description":841,"category":10,"score":329},"核心模块与常见指令详解","深入 Nginx 的指令层，是配置落地的关键。下面按功能模块拆解，每个指令都说明含义、语法、典型示例，并点出极易踩坑的地方。",{"path":722,"title":759,"description":843,"category":10,"score":329},"故障排查的关键是快速定位，而非盲目重试。下面按最常见的五种现象归类，每一种都给出清晰的排查路径和解决思路。",{"path":845,"title":846,"description":847,"category":10,"score":329},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Fpre","性能调优基础","性能调优的目标是：用有限的资源，支撑更高的并发、更快的响应、更稳的服务。下面按优化维度，逐一拆解原理和配置要诀。",{"path":849,"title":850,"description":851,"category":10,"score":329},"\u002Fknowledge\u002Fbooklet\u002Fuphold\u002Fnginx\u002Flogger","访问日志与错误日志","日志是 Nginx 排错的“第一现场”。一个优秀的日志策略既能完整保留请求上下文，又不会撑爆磁盘。下面从格式定制、存储轮转、错误分级三个维度详细讲解。",{"series":853,"title":12,"items":854,"index":868,"prev":869,"next":870},"booklet\u002Fuphold\u002Fnginx",[855,856,858,860,862,864,866],{"path":7,"title":8,"date":13,"pinned":14},{"path":747,"title":837,"date":857,"pinned":14},"2023-11-24",{"path":654,"title":840,"date":859,"pinned":14},"2023-04-25",{"path":849,"title":850,"date":861,"pinned":14},"2020-02-29",{"path":845,"title":846,"date":863,"pinned":14},"2020-07-11",{"path":701,"title":702,"date":865,"pinned":14},"2024-12-02",{"path":722,"title":759,"date":867,"pinned":14},"2020-09-18",0,null,{"path":747,"title":837,"date":857,"pinned":14}]