From 4286e0c020942b2dbdc344322a0242248672f340 Mon Sep 17 00:00:00 2001 From: QihanNX Date: Sun, 14 Jun 2026 14:19:13 +0800 Subject: [PATCH] =?UTF-8?q?Create=20=E6=89=80=E6=9C=89HTTP=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=A0=81=E5=90=AB=E4=B9=89=E5=8F=8A=E5=B8=B8=E8=A7=81?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E7=9A=84=E8=A7=A3=E5=86=B3=E6=96=B9?= =?UTF-8?q?=E6=B3=95.mdx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...€æœ‰HTTP状æ€ç å«ä¹‰åŠå¸¸è§é”™è¯¯ç çš„解决方法.mdx | 294 ++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 src/content/posts/所有HTTP状æ€ç å«ä¹‰åŠå¸¸è§é”™è¯¯ç çš„解决方法.mdx diff --git a/src/content/posts/所有HTTP状æ€ç å«ä¹‰åŠå¸¸è§é”™è¯¯ç çš„解决方法.mdx b/src/content/posts/所有HTTP状æ€ç å«ä¹‰åŠå¸¸è§é”™è¯¯ç çš„解决方法.mdx new file mode 100644 index 0000000..b87e9b6 --- /dev/null +++ b/src/content/posts/所有HTTP状æ€ç å«ä¹‰åŠå¸¸è§é”™è¯¯ç çš„解决方法.mdx @@ -0,0 +1,294 @@ +--- +title: "所有HTTP状æ€ç å«ä¹‰åŠ4xx/5xx错误解决方法" +description: "从1xx到5xx,一文看懂所有HTTP状æ€ç çš„å«ä¹‰ã€‚" +pubDatetime: 2026-06-14 +author: "Qihan" +tags: ["故障排查"] +category: "技术教程" +--- + +今天我们一起æ¥èŠèŠå¸¸è§çš„ HTTP 状æ€ç åŠå…¶å«ä¹‰ï¼Œç„¶åŽå†é’ˆå¯¹ **4xx** å’Œ **5xx** 给出详细的解决方法。 + +## ä¸€ã€æ‰€æœ‰ HTTP 状æ€ç é€ŸæŸ¥è¡¨ + +状æ€ç åˆ†ä¸ºäº”类,æ¯ç±»ä»¥ä¸åŒæ•°å­—开头。 + +### 1xx:信æ¯å“应(请求已接收,继续处ç†ï¼‰ + +| 状æ€ç  | å«ä¹‰ | 说明 | +|--------|------|------| +| 100 Continue | ç»§ç»­ | æœåŠ¡å™¨å·²æ”¶åˆ°è¯·æ±‚å¤´ï¼Œå®¢æˆ·ç«¯åº”ç»§ç»­å‘é€è¯·æ±‚体 | +| 101 Switching Protocols | 切æ¢åè®® | æœåŠ¡å™¨åŒæ„切æ¢åˆ°å®¢æˆ·ç«¯è¦æ±‚çš„å议(如 WebSocket) | +| 102 Processing | 处ç†ä¸­ | æœåŠ¡å™¨å·²æ”¶åˆ°å¹¶æ­£åœ¨å¤„ç†è¯·æ±‚,但暂无å“应(WebDAV) | + +### 2xx:æˆåŠŸï¼ˆè¯·æ±‚è¢«æˆåŠŸå¤„ç†ï¼‰ + +| 状æ€ç  | å«ä¹‰ | 说明 | +|--------|------|------| +| 200 OK | æˆåŠŸ | 请求æˆåŠŸï¼Œè¿”å›žæ‰€éœ€èµ„æºï¼ˆæœ€ç†æƒ³çš„å“应) | +| 201 Created | 已创建 | 请求æˆåŠŸä¸”æœåŠ¡å™¨åˆ›å»ºäº†æ–°èµ„æºï¼ˆå¦‚ POST æäº¤åŽï¼‰ | +| 202 Accepted | å·²æŽ¥å— | 请求已接å—但尚未处ç†å®Œæˆï¼ˆç”¨äºŽå¼‚步任务) | +| 203 Non-Authoritative Information | éžæŽˆæƒä¿¡æ¯ | è¿”å›žçš„å…ƒä¿¡æ¯æ¥è‡ªç¼“存或第三方,éžåŽŸå§‹æœåС噍 | +| 204 No Content | 无内容 | 请求æˆåŠŸä½†æ— è¿”å›žå†…å®¹ï¼ˆå¸¸ç”¨äºŽ DELETE æˆ–è¡¨å•æäº¤ï¼‰ | +| 205 Reset Content | é‡ç½®å†…容 | 请求æˆåŠŸï¼Œè¦æ±‚客户端é‡ç½®æ–‡æ¡£è§†å›¾ï¼ˆå¦‚清空表å•) | +| 206 Partial Content | 部分内容 | æœåŠ¡å™¨è¿”å›žäº†éƒ¨åˆ†èµ„æºï¼ˆæ”¯æŒæ–­ç‚¹ç»­ä¼ æˆ–分片下载) | + +### 3xx:é‡å®šå‘(需è¦è¿›ä¸€æ­¥æ“作) + +| 状æ€ç  | å«ä¹‰ | 说明 | +|--------|------|------| +| 300 Multiple Choices | 多ç§é€‰æ‹© | è¯·æ±‚çš„èµ„æºæœ‰å¤šä¸ªè¡¨ç¤ºï¼Œç”¨æˆ·å¯é€‰æ‹©å…¶ä¸€ | +| 301 Moved Permanently | 永久移动 | 资æºå·²æ°¸ä¹…移动到新 URL,将æ¥è¯·æ±‚åº”ä½¿ç”¨æ–°åœ°å€ | +| 302 Found | 临时移动 | 资æºä¸´æ—¶ä½äºŽå…¶ä»– URL,åŽç»­ä»ç”¨åŽŸåœ°å€ | +| 303 See Other | 查看其他 | 应用 GET 方法é‡å®šå‘到å¦ä¸€ä¸ª URL(常用于 POST åŽé‡å®šå‘) | +| 304 Not Modified | 未修改 | èµ„æºæœªå˜åŒ–,å¯ä½¿ç”¨ç¼“存版本(节çœå¸¦å®½ï¼‰ | +| 307 Temporary Redirect | 临时é‡å®šå‘ | 与 302 ç±»ä¼¼ï¼Œä½†ä¿æŒåŽŸå§‹è¯·æ±‚æ–¹æ³•ä¸å˜ | +| 308 Permanent Redirect | 永久é‡å®šå‘ | 与 301 ç±»ä¼¼ï¼Œä½†ä¿æŒåŽŸå§‹è¯·æ±‚æ–¹æ³•ä¸å˜ | + +### 4xx:客户端错误(请求有问题) + +| 状æ€ç  | å«ä¹‰ | 说明 | +|--------|------|------| +| 400 Bad Request | 错误请求 | æœåŠ¡å™¨æ— æ³•ç†è§£è¯·æ±‚è¯­æ³•ï¼ˆå¦‚å‚æ•°é”™è¯¯ã€URL 过长) | +| 401 Unauthorized | æœªæŽˆæƒ | 需è¦èº«ä»½è®¤è¯ï¼ˆæœªç™»å½•æˆ–å‡­è¯æ— æ•ˆï¼‰ | +| 403 Forbidden | ç¦æ­¢è®¿é—® | æœåС噍ç†è§£è¯·æ±‚ä½†æ‹’ç»æ‰§è¡Œï¼ˆç™»å½•了但无æƒé™ï¼‰ | +| 404 Not Found | 未找到 | 请求的资æºä¸å­˜åœ¨ï¼ˆæœ€å¸¸è§ï¼‰ | +| 405 Method Not Allowed | 方法ä¸å…许 | ä½¿ç”¨äº†ä¸æ”¯æŒçš„ HTTP 方法(如用 GET æäº¤ POST 接å£ï¼‰ | +| 406 Not Acceptable | æ— æ³•æŽ¥å— | æœåŠ¡å™¨æ— æ³•æ ¹æ®å®¢æˆ·ç«¯ Accept 头生æˆå“应 | +| 407 Proxy Authentication Required | 需è¦ä»£ç†è®¤è¯ | 需è¦é€šè¿‡ä»£ç†æœåŠ¡å™¨è®¤è¯ | +| 408 Request Timeout | 请求超时 | æœåŠ¡å™¨ç­‰å¾…å®¢æˆ·ç«¯å‘é€è¯·æ±‚è¶…æ—¶ | +| 409 Conflict | å†²çª | 请求与资æºå½“å‰çжæ€å†²çªï¼ˆå¦‚编辑冲çªï¼‰ | +| 410 Gone | 已永久删除 | 资æºå·²æ°¸ä¹…删除,且æœåС噍ä¸çŸ¥é“æ–°åœ°å€ | +| 411 Length Required | 需è¦å†…容长度 | 缺少 Content-Length 头字段 | +| 412 Precondition Failed | å‰ç½®æ¡ä»¶å¤±è´¥ | 请求头中的æ¡ä»¶æœªæ»¡è¶³ | +| 413 Payload Too Large | 负载过大 | 请求体超过æœåС噍é™åˆ¶ | +| 414 URI Too Long | URI 过长 | 请求的 URL 过长 | +| 415 Unsupported Media Type | 䏿”¯æŒçš„媒体类型 | 请求的 Content-Type ä¸è¢«æœåŠ¡å™¨æ”¯æŒ | +| 416 Range Not Satisfiable | 范围ä¸ç¬¦åˆè¦æ±‚ | 请求的字节范围无效 | +| 417 Expectation Failed | 期望失败 | æœåŠ¡å™¨æ— æ³•æ»¡è¶³ Expect å¤´è¦æ±‚ | +| 418 I'm a teapot | 我是茶壶 | 愚人节彩蛋,表示“我ä¸ç…®å’–å•¡â€ï¼ˆRFC 2324) | +| 422 Unprocessable Content | 无法处ç†å†…容 | 语义正确但内容错误(如验è¯å¤±è´¥ï¼‰ | +| 429 Too Many Requests | 请求过多 | 用户在给定时间内å‘é€äº†è¿‡å¤šè¯·æ±‚ï¼ˆé™æµï¼‰ | + +### 5xx:æœåŠ¡å™¨é”™è¯¯ï¼ˆæœåС噍处ç†è¯·æ±‚出错) + +| 状æ€ç  | å«ä¹‰ | 说明 | +|--------|------|------| +| 500 Internal Server Error | æœåŠ¡å™¨å†…éƒ¨é”™è¯¯ | 通用æœåŠ¡å™¨é”™è¯¯ï¼Œå…·ä½“åŽŸå› éœ€æŸ¥æ—¥å¿— | +| 501 Not Implemented | 未实现 | æœåС噍䏿”¯æŒè¯·æ±‚的功能(如未实现的 HTTP 方法) | +| 502 Bad Gateway | 错误网关 | 网关或代ç†ä»Žä¸Šæ¸¸æœåŠ¡å™¨æ”¶åˆ°æ— æ•ˆå“应 | +| 503 Service Unavailable | æœåŠ¡ä¸å¯ç”¨ | æœåŠ¡å™¨è¿‡è½½æˆ–ç»´æŠ¤ä¸­ï¼Œæš‚æ—¶æ— æ³•å¤„ç†è¯·æ±‚ | +| 504 Gateway Timeout | 网关超时 | ç½‘å…³æˆ–ä»£ç†æœªåŠæ—¶ä»Žä¸Šæ¸¸æœåŠ¡å™¨æ”¶åˆ°å“应 | +| 505 HTTP Version Not Supported | HTTP ç‰ˆæœ¬ä¸æ”¯æŒ | æœåС噍䏿”¯æŒè¯·æ±‚çš„ HTTP å议版本 | +| 507 Insufficient Storage | 存储ä¸è¶³ | æœåŠ¡å™¨æ— æ³•å­˜å‚¨å®Œæˆè¯·æ±‚所需的内容 | +| 508 Loop Detected | 检测到循环 | æœåŠ¡å™¨åœ¨å¤„ç†è¯·æ±‚æ—¶å‘现无é™å¾ªçޝ | +| 510 Not Extended | 未扩展 | 请求需è¦è¿›ä¸€æ­¥æ‰©å±•æ‰èƒ½å®Œæˆ | +| 511 Network Authentication Required | 需è¦ç½‘ç»œè®¤è¯ | 需è¦è®¤è¯æ‰èƒ½è®¿é—®ç½‘络(如公共 WiFi 登录页) | + +> **备注**:实际工作中最常è§çš„åªæœ‰ 200ã€301/302ã€304ã€400ã€401ã€403ã€404ã€429ã€500ã€502ã€503ã€504 ç­‰å几个。上é¢åˆ—出的是所有标准定义的状æ€ç ã€‚ + +--- + +## 二ã€å¸¸è§é”™è¯¯ç è¯¦è§£åŠè§£å†³æ–¹æ³•(4xx & 5xx) + +下é¢é’ˆå¯¹æ™®é€šç”¨æˆ·å’Œç½‘站管ç†å‘˜ï¼Œè¯¦ç»†è¯´æ˜Žæœ€å¸¸é‡åˆ°çš„错误ç çš„**原因**å’Œ**解决方法**。 + +### 1. 400 Bad Request —— 错误请求 + +**å«ä¹‰**:æœåŠ¡å™¨æ— æ³•ç†è§£ä½ å‘é€çš„请求,通常是请求语法有问题。 + +**常è§åŽŸå› **: +- 网å€è¿‡é•¿ï¼ˆè¶…过æµè§ˆå™¨æˆ–æœåС噍é™åˆ¶ï¼‰ +- Cookie 太大 +- æäº¤çš„表å•包å«éžæ³•字符 +- æµè§ˆå™¨ç¼“å­˜æŸå + +**解决方法(普通用户)**: +- 清除æµè§ˆå™¨ç¼“存和 Cookie +- æ£€æŸ¥ç½‘å€æ˜¯å¦åŒ…å«ä¹±ç æˆ–特殊字符 +- å°è¯•æ— ç—•æ¨¡å¼æˆ–æ¢ä¸€ä¸ªæµè§ˆå™¨ +- 缩短 URL 傿•°ï¼ˆå¦‚果能手动简化) + +**解决方法(网站管ç†å‘˜ï¼‰**: +- 检查æœåŠ¡å™¨æ—¥å¿—ï¼Œå®šä½å…·ä½“原因(如 `$http_referer` 或 `$query_string` 异常) +- 增大 `client_header_buffer_size`(Nginx)或 `LimitRequestLine`(Apache) +- é™åˆ¶å•个 Cookie çš„å¤§å° + +### 2. 401 Unauthorized —— æœªæŽˆæƒ + +**å«ä¹‰**:请求需è¦ç”¨æˆ·è®¤è¯ï¼Œä½†æœªæä¾›æˆ–认è¯å¤±è´¥ã€‚ + +**它与 403 的区别**:401 表示“还没登录â€ï¼Œ403 表示“登录了但没æƒé™â€ã€‚ + +**解决方法(普通用户)**: +- 如果弹出登录框,输入正确的账å·å¯†ç  +- 清除æµè§ˆå™¨ä¸­ä¿å­˜çš„该网站密ç ï¼Œé‡æ–°ç™»å½• +- ç¡®è®¤è´¦å·æ˜¯å¦æœ‰æ•ˆæˆ–未过期 + +**解决方法(网站管ç†å‘˜ï¼‰**: +- æ£€æŸ¥è®¤è¯æ¨¡å—é…置(如 Nginx çš„ `auth_basic`ã€Apache çš„ `mod_auth`) +- 确认åŽç«¯ä¼šè¯éªŒè¯é€»è¾‘无误 +- æŸ¥çœ‹æ˜¯å¦æœ‰ IP 白å啿ˆ–地ç†ä½ç½®é™åˆ¶ + +### 3. 403 Forbidden —— ç¦æ­¢è®¿é—® + +**å«ä¹‰**:æœåС噍ç†è§£è¯·æ±‚ï¼Œä½†æ‹’ç»æ‰§è¡Œã€‚通常是æƒé™ä¸è¶³ã€‚ + +**常è§åŽŸå› **: +- 需è¦ç™»å½•但未登录(ä¸åŒäºŽ 401,有些站点用 403 表示未登录) +- IP 被æœåŠ¡å™¨åˆ—å…¥é»‘åå• +- 目录æƒé™è¿‡äºŽä¸¥æ ¼ï¼ˆå¦‚ Linux 目录无 `rx` æƒé™ï¼‰ +- 网站é…置了防盗链或访问频率é™åˆ¶ + +**解决方法(普通用户)**: +- åˆ·æ–°é¡µé¢æˆ–清除æµè§ˆå™¨ç¼“存和 Cookie +- 检查是å¦å·²ç™»å½•,如果没有,先登录 +- æ¢ä¸ªç½‘络(如用手机热点)试试 +- è”系网站管ç†å‘˜ï¼Œå‘ŠçŸ¥ä½ çš„ IP åœ°å€ + +**解决方法(网站管ç†å‘˜ï¼‰**: +- 检查 `.htaccess` 或 Nginx/Apache 的访问控制规则 +- 确认文件/目录æƒé™ï¼ˆç›®å½• 755,文件 644) +- 检查是å¦è¯¯å¯äº† IP 黑å啿ˆ– User-Agent 过滤 +- 查看 `error.log` 中的具体拒ç»åŽŸå›  + +### 4. 404 Not Found —— 未找到 + +**å«ä¹‰**:æœåŠ¡å™¨æ‰¾ä¸åˆ°è¯·æ±‚的资æºï¼ˆç½‘页ã€å›¾ç‰‡ã€æ–‡ä»¶ç­‰ï¼‰ã€‚**最常è§**的错误ç ã€‚ + +**常è§åŽŸå› **: +- ç½‘å€æ‹¼å†™é”™è¯¯ +- 页é¢è¢«åˆ é™¤ä¸”未设置é‡å®šå‘ +- 链接已过期(活动页é¢ã€æ—§ç‰ˆæ–‡æ¡£ï¼‰ + +**解决方法(普通用户)**: +- æ£€æŸ¥ç½‘å€æ˜¯å¦è¾“错(尤其是末尾斜æ ã€å¤§å°å†™ï¼‰ +- 删除网å€ä»Žç¬¬ä¸€ä¸ªæ–œæ å¾€åŽçš„éƒ¨åˆ†ï¼Œå›žåˆ°ç½‘ç«™é¦–é¡µé‡æ–°å¯¼èˆª +- 如果从æœç´¢å¼•擎点击进入,å°è¯•æœç´¢ç½‘ç«™å†…å…¶ä»–å…³é”®è¯ +- 使用 `site:example.com 关键è¯` 查找该网站是å¦è¿˜æœ‰ç›¸å…³å†…容 + +**解决方法(网站管ç†å‘˜ï¼‰**: +- é…置自定义 404 页é¢ï¼Œå¼•导用户回到首页或æœç´¢ +- 对永久删除的页é¢è®¾ç½® 301 é‡å®šå‘åˆ°æ–°é¡µé¢ +- 定期检查 Google Search Console 中的 404 é”™è¯¯ï¼Œä¿®å¤æ— æ•ˆé“¾æŽ¥ +- 使用工具(如 Xenuã€Screaming Frog)扫æå…¨ç«™æ­»é“¾ + +### 5. 429 Too Many Requests —— 请求过多 + +**å«ä¹‰**:你在短时间内å‘é€äº†å¤ªå¤šè¯·æ±‚,被æœåС噍陿µã€‚ + +**常è§åŽŸå› **: +- 脚本或爬虫抓å–过快 +- 网站é…置了 IP 频率é™åˆ¶ +- 用户疯狂刷新页é¢ï¼ˆæ¯”如抢购ã€ç§’æ€åœºæ™¯ï¼‰ + +**解决方法(普通用户)**: +- åœæ­¢åˆ·æ–°ï¼Œç­‰å¾…å‡ åˆ†é’Ÿæˆ–å‡ å°æ—¶ +- å¦‚æžœä½¿ç”¨ä»£ç†æˆ– VPN,å°è¯•关闭åŽé‡è¯• +- æ£€æŸ¥æ˜¯å¦æœ‰æµè§ˆå™¨æ’件在频ç¹è¯·æ±‚ + +**解决方法(网站管ç†å‘˜ï¼‰**: +- ä½¿ç”¨é™æµæ¨¡å—(如 Nginx çš„ `limit_req`ã€Apache çš„ `mod_ratelimit`) +- é…ç½®åˆç†çš„ `burst` å’Œ `nodelay` 傿•° +- 返回 429 时附带 `Retry-After` 头,告知客户端多久åŽé‡è¯• + +### 6. 500 Internal Server Error —— æœåŠ¡å™¨å†…éƒ¨é”™è¯¯ + +**å«ä¹‰**:æœåС噍é‡åˆ°æ„外情况,无法完æˆè¯·æ±‚。这是最通用的æœåŠ¡å™¨é”™è¯¯ï¼Œå…·ä½“åŽŸå› å¤šæ ·ã€‚ + +**常è§åŽŸå› **: +- 代ç è¯­æ³•错误(如 PHP 缺少分å·ã€Python 缩进错误) +- 文件æƒé™ä¸æ­£ç¡®ï¼ˆå¦‚无法写入临时目录或日志文件) +- æœåŠ¡å™¨å†…å­˜ä¸è¶³ +- .htaccess 规则错误(Apache) +- ä¾èµ–æœåŠ¡æœªå¯åŠ¨ï¼ˆå¦‚æ•°æ®åº“ã€Redis) + +**解决方法(普通用户)**: +- 刷新页é¢ï¼ˆæœ‰æ—¶åªæ˜¯çž¬æ—¶è¿‡è½½ï¼‰ +- 等几分钟å†è¯•,å¯èƒ½æœåŠ¡å™¨æ­£åœ¨é‡å¯ +- 清除æµè§ˆå™¨ç¼“存和 Cookie +- è”系网站管ç†å‘˜ï¼Œé™„上错误å‘生时间和æ“作步骤 + +**解决方法(网站管ç†å‘˜ï¼‰**: +- **第一è¦åŠ¡**:查看æœåŠ¡å™¨é”™è¯¯æ—¥å¿—ï¼ˆ`/var/log/nginx/error.log`ã€`/var/log/apache2/error.log`ã€`/var/log/php_errors.log`) +- 检查最近是å¦ä¿®æ”¹äº† `.htaccess`ã€é…ç½®æ–‡ä»¶æˆ–ä¸Šä¼ äº†æ–°ä»£ç  +- 增加 PHP 内存é™åˆ¶ï¼ˆ`memory_limit`)或执行时间(`max_execution_time`) +- 检查文件和目录所有æƒï¼ˆå°¤å…¶ç¡®ä¿ Web 用户如 `www-data` 有读写æƒé™ï¼‰ +- 在开å‘环境开å¯è¯¦ç»†é”™è¯¯æ˜¾ç¤ºï¼ˆ`display_errors = On`)定ä½å…·ä½“代ç è¡Œå·ï¼Œä¿®å¤åˆå…¥ç”Ÿäº§ + +### 7. 502 Bad Gateway —— 错误网关 + +**å«ä¹‰**:作为网关或代ç†çš„æœåŠ¡å™¨ï¼ˆå¦‚ Nginx),从上游æœåŠ¡å™¨ï¼ˆå¦‚ PHP-FPMã€Tomcat)收到了无效å“应。 + +**常è§åŽŸå› **: +- åŽç«¯æœåŠ¡æŒ‚äº†æˆ–æœªå¯åŠ¨ï¼ˆPHP-FPMã€Node.jsã€Java 应用) +- 网关和åŽç«¯ä¹‹é—´è¿žæŽ¥è¶…æ—¶ +- 防ç«å¢™æ‹¦æˆªäº†é€šä¿¡ç«¯å£ +- åŽç«¯æœåŠ¡å“应时间过长(如慢 SQL) + +**解决方法(普通用户)**: +- 刷新几次(有时åŽç«¯ä¼šè‡ªæ„ˆï¼‰ +- 等几分钟,管ç†å‘˜å¯èƒ½æ­£åœ¨é‡å¯æœåŠ¡ +- è”系网站管ç†å‘˜ + +**解决方法(网站管ç†å‘˜ï¼‰**: +- 检查åŽç«¯æœåŠ¡çŠ¶æ€ï¼š`systemctl status php8.1-fpm`ã€`ps aux | grep node` +- é‡å¯åŽç«¯æœåŠ¡ï¼š`systemctl restart php8.1-fpm` +- 检查 Nginx/Apache çš„ `upstream` é…ç½®æ˜¯å¦æŒ‡å‘正确的 IP å’Œç«¯å£ +- 查看åŽç«¯æœåŠ¡çš„æ—¥å¿—ï¼ˆå¦‚ PHP-FPM çš„ `error_log`ã€Tomcat çš„ `catalina.out`) +- 增加超时时间:`proxy_read_timeout` 或 `fastcgi_read_timeout` 适当增大(如 300s) +- 检查防ç«å¢™ï¼š`telnet 127.0.0.1 9000`(测试 PHP-FPM ç«¯å£æ˜¯å¦å¯è¾¾ï¼‰ + +### 8. 503 Service Unavailable —— æœåŠ¡ä¸å¯ç”¨ + +**å«ä¹‰**:æœåŠ¡å™¨æš‚æ—¶æ— æ³•å¤„ç†è¯·æ±‚(通常是由于过载或维护中)。与 500 的区别:503 通常是预期的ã€ä¸´æ—¶çš„。 + +**常è§åŽŸå› **: +- æµé‡æ¿€å¢žï¼Œè¶…过æœåС噍处ç†èƒ½åŠ› +- 正在进行计划内维护 +- åº”ç”¨ç¨‹åºæ± è€—尽了工作进程(如 PHP å­è¿›ç¨‹ç”¨å®Œï¼‰ +- 被 DDoS æ”»å‡»æˆ–ä¸»åŠ¨é™æµ + +**解决方法(普通用户)**: +- 过几分钟å†è¯•(最佳策略) +- 刷新页é¢ï¼ˆæŸäº›çž¬æ—¶ 503 坿¢å¤ï¼‰ +- å¤§åž‹ç½‘ç«™å¯æŸ¥çœ‹å…¶å®˜æ–¹ç¤¾äº¤åª’ä½“æ˜¯å¦æœ‰ç»´æŠ¤å…¬å‘Š + +**解决方法(网站管ç†å‘˜ï¼‰**: +- 检查æœåŠ¡å™¨è´Ÿè½½ã€å¸¦å®½å’Œå†…存使用情况(`top`ã€`htop`ã€`free -m`) +- å¦‚æžœæ˜¯é™æµé…置(如 Nginx çš„ `limit_req` 或 `limit_conn`),å¯ä¸´æ—¶è°ƒé«˜é˜ˆå€¼ +- 增加工作进程或 PHP-FPM çš„ `pm.max_children` 值 +- 考虑å¯ç”¨ CDN 或负载å‡è¡¡åˆ†æ‹…压力 +- 对于计划内维护,返回 503 时应带上 `Retry-After` 头,并é…置一个å‹å¥½çš„ç»´æŠ¤é¡µé¢ + +### 9. 504 Gateway Timeout —— 网关超时 + +**å«ä¹‰**:作为网关的æœåŠ¡å™¨åœ¨è§„å®šæ—¶é—´å†…æ²¡æœ‰æ”¶åˆ°ä¸Šæ¸¸æœåŠ¡å™¨çš„å“应。与 502 类似,502 是收到了无效å“应,504 是根本没收到。 + +**常è§åŽŸå› **: +- åŽç«¯æœåŠ¡æ‰§è¡Œæ—¶é—´è¿‡é•¿ï¼ˆå¤æ‚æ•°æ®åº“查询ã€è°ƒç”¨å¤–部 API 超时) +- 网关与åŽç«¯ä¹‹é—´çš„网络延迟很高 +- åŽç«¯æœåŠ¡å™¨è´Ÿè½½è¿‡é«˜ï¼Œè¯·æ±‚æŽ’é˜Ÿç­‰å¾… + +**解决方法(普通用户)**: +- 刷新页é¢ï¼ˆå¯èƒ½åªæ˜¯å¶å°”超时) +- å°è¯•在éžé«˜å³°æœŸè®¿é—® +- è”系网站管ç†å‘˜ + +**解决方法(网站管ç†å‘˜ï¼‰**: +- 增加网关的超时设置:`proxy_read_timeout 300s;`ã€`fastcgi_read_timeout 300s;` +- 优化åŽç«¯ä»£ç å’Œæ•°æ®åº“查询(加索引ã€ç¼“存结果ã€åˆ†è§£å¤æ‚查询) +- 检查åŽç«¯æœåŠ¡å™¨çš„æ…¢æŸ¥è¯¢æ—¥å¿—ï¼ˆMySQL çš„ `slow_query_log`) +- 将耗时æ“作改为异步处ç†ï¼ˆå¦‚使用消æ¯é˜Ÿåˆ—ã€åŽå°ä»»åŠ¡ï¼‰ +- 检查网络延迟:`ping` 或 `traceroute` 到åŽç«¯æœåС噍 + +## ä¸‰ã€æŸ¥æ‰¾é”™è¯¯åŽŸå› çš„å°æŠ€å·§ + +**普通用户**:如果é‡åˆ° 4xx,先检查自己的æ“作;é‡åˆ° 5xx,ç¨ç­‰å†è¯•,ä»ä¸è¡Œå°±è”系网站管ç†å‘˜ã€‚å¯ä»¥ä½¿ç”¨æµè§ˆå™¨çš„ **å¼€å‘者工具**(F12 → Network 标签)查看具体状æ€ç å’Œå“应信æ¯ã€‚ + +**网站管ç†å‘˜**: +- 查看日志命令:`tail -f /var/log/nginx/error.log` +- 在线测试工具:`curl -I https://你的域å` åªè¿”回状æ€å¤´ +- é…置监控告警:UptimeRobotã€Statuscake 或 Prometheus + Alertmanager + +希望这份速查表和解决方法能帮你少走弯路。ç¥ä½ çš„网站永远 **200 OK**ï¼