Debian Node.js日志中HTTP状态码含义
导读:Debian 上运行的 Node.js 服务日志中,HTTP 状态码用于指示请求在客户端与服务器之间的处理结果。状态码为三位数字,按首位划分为 1xx–5xx 五类,含义固定且与语言/框架无关。 状态码分类概览 1xx 信息性:请求已被接...
Debian 上运行的 Node.js 服务日志中,HTTP 状态码用于指示请求在客户端与服务器之间的处理结果。状态码为三位数字,按首位划分为 1xx–5xx 五类,含义固定且与语言/框架无关。
状态码分类概览
- 1xx 信息性:请求已被接收,继续处理(如:100 Continue、101 Switching Protocols)。
- 2xx 成功:请求已成功接收、理解并处理(如:200 OK、201 Created、204 No Content)。
- 3xx 重定向:需要额外操作以完成请求(如:301 Moved Permanently、302 Found、304 Not Modified)。
- 4xx 客户端错误:请求存在语法错误或无法完成(如:400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、405 Method Not Allowed)。
- 5xx 服务器错误:服务器处理请求时发生错误(如:500 Internal Server Error、502 Bad Gateway、503 Service Unavailable、504 Gateway Timeout)。
常见状态码与排查要点
| 状态码 | 含义 | 常见触发 | 排查要点 |
|---|---|---|---|
| 200 | OK | 正常请求成功 | 正常业务路径 |
| 201 | Created | POST/PUT 创建资源成功 | 检查创建结果是否落库 |
| 204 | No Content | 成功但无响应体 | 确认客户端是否预期无内容 |
| 301 | Moved Permanently | 资源永久迁移 | 更新站点地图与反向代理配置 |
| 302 | Found | 临时跳转 | 检查登录/地域跳转逻辑 |
| 304 | Not Modified | 协商缓存命中 | 核对 ETag/Last-Modified 与缓存策略 |
| 400 | Bad Request | 参数缺失/格式错误 | 校验请求体/查询参数/Content-Type |
| 401 | Unauthorized | 未认证或凭证无效 | 检查 Authorization 头与认证中间件 |
| 403 | Forbidden | 权限不足 | 核对访问控制与角色授权 |
| 404 | Not Found | 路由或资源不存在 | 检查路由表与静态资源路径 |
| 405 | Method Not Allowed | 方法不被允许 | 核对路由允许的 GET/POST/PUT/DELETE |
| 408 | Request Timeout | 客户端请求超时 | 检查客户端超时设置与网络质量 |
| 413 | Payload Too Large | 请求体过大 | 调整 body-parser/反向代理体积限制 |
| 414 | URI Too Long | URL 过长 | 缩短查询串或改用 POST |
| 415 | Unsupported Media Type | 不支持的媒体类型 | 设置正确的 Content-Type(如 application/json) |
| 500 | Internal Server Error | 未捕获异常/代码错误 | 查看堆栈与异常日志,补齐 try/catch 与中间件错误处理 |
| 502 | Bad Gateway | 网关/上游无效响应 | 检查 Nginx/负载均衡 与上游健康 |
| 503 | Service Unavailable | 过载/维护 | 检查进程存活、限流/熔断与维护页 |
| 504 | Gateway Timeout | 网关/上游超时 | 调整反向代理与上游超时阈值 |
| 以上状态码定义与常见触发场景适用于 Node.js(含 Express) 应用,在 Debian 环境下通过 Nginx/PM2/系统日志 观察时含义一致。 |
在 Node.js 与 Express 中设置与记录
- 设置状态码(原生 http 模块):
const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' } ); res.end('OK'); } ); server.listen(3000, () => console.log('Server on 3000')); - 设置状态码(Express):
app.get('/ok', (req, res) => res.status(200).send('OK')); app.get('/created', (req, res) => res.status(201).json({ id: 1 } )); app.use((err, req, res, next) => { console.error(err); // 便于 Debian 系统日志/服务日志排查 res.status(500).send('Internal Server Error'); } ); - 日志建议:在 Nginx 记录响应码(如:
access_log /var/log/nginx/access.log;),在 Node.js 统一使用 Morgan 或自定义中间件输出statusCode、method、url、responseTime、ip,便于在 journald/syslog 中检索与告警。
Debian 环境排查要点
- 定位进程与日志:确认服务由 PM2/Node/npm 启动,查看 journalctl -u your-service 或 /var/log/…;Nginx 访问与错误日志分别位于 /var/log/nginx/access.log 与 error.log。
- 区分 4xx 与 5xx:大量 4xx 多为客户端/路由问题;持续 5xx 需优先排查未捕获异常、依赖服务不可用、资源耗尽(CPU/内存/句柄/连接)。
- 网关链路:若经 Nginx/负载均衡,出现 502/504 优先检查上游进程存活、超时与反向代理配置;503 常见于进程崩溃或维护模式。
- 缓存与重定向:304 属正常命中;301/302 需核对 SEO 与跳转目标是否正确配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian Node.js日志中HTTP状态码含义
本文地址: https://pptw.com/jishu/773100.html
