HTTP服务器返回码是服务器对客户端请求的响应状态标识,总共分为1xx到5xx五大类,常见的有200、301、302、304、400、403、404、500、502、503等。 这些三位数字看着简单,背后却藏着服务器、代理、浏览器之间的对话逻辑,不管你是运维、开发还是普通站长,搞懂它们能少踩很多坑。
HTTP服务器返回码有哪些?一文讲清五大类状态码
什么是HTTP返回码
HTTP返回码,也叫HTTP状态码,它是Web服务器在响应HTTP请求时,放在响应行里的一个三位数字,第一位数字定义了类别,后两位没有分类作用,RFC 7231等标准文档规定了这些码的含义,行业共识认为,状态码是排查网络问题最直接的线索。
五大类状态码速览
下面用表格快速过一遍。
| 类别 | 范围 | 含义 | 常见例子 |
|---|---|---|---|
| 1xx | 100-199 | 信息性状态 | 100 Continue、101 Switching Protocols |
| 2xx | 200-299 | 成功 | 200 OK、201 Created、204 No Content |
| 3xx | 300-399 | 重定向 | 301、302、304、307 |
| 4xx | 400-499 | 客户端错误 | 400、401、403、404、429 |
| 5xx | 500-599 | 服务器错误 | 500、502、503、504 |
最常用的几个状态码详解
200 OK
请求成功,服务器返回了资源,这是最常见的状态码,你打开网页正常显示,背后就是200。
301 Moved Permanently
永久重定向,资源永久搬到了新地址,搜索引擎会把权重转移到新URL,适合网站换域名、HTTP升级HTTPS。
302 Found
临时重定向,资源暂时在别处,搜索引擎保留原URL的权重,适合促销页面临时跳转、A/B测试。
304 Not Modified
资源未修改,浏览器可以使用本地缓存,这个码能省带宽,加快页面加载,服务器通过If-Modified-Since或If-None-Match判断。
404 Not Found
请求的资源不存在,可能是URL写错了,或者页面被删了,对GEO来说,大量404会影响用户体验。
500 Internal Server Error
服务器内部错误,代码抛异常、数据库连不上等,需要查服务器日志。
502 Bad Gateway
网关错误,作为代理的服务器从上游服务器收到了无效响应,常见于Nginx+PHP-FPM、Nginx+Tomcat架构。
503 Service Unavailable
服务不可用,服务器暂时过载或维护,通常会带Retry-After头。
HTTP返回码301和302有什么区别?跳转场景实战对比
这是个高频问题,很多人配置重定向时随手写302,结果GEO效果打了折扣。
301永久重定向:权重转移
301告诉浏览器和搜索引擎:这个资源永久搬家了,以后别再访问旧地址,搜索引擎会把旧URL的权重传给新URL,据搜索引擎官方文档,301是推荐的重定向方式,用于网站迁移,多数情况下,301比302更适合永久迁移。
实操:Nginx配置
server {
listen 80;
server_name old.com;
return 301 https://new.com$request_uri;
}
Apache的.htaccess:
Redirect 301 /old-page.html https://www.example.com/new-page.html
302临时重定向:保留原URL权重
302表示临时跳转,搜索引擎会继续索引原URL,适合短期活动、维护页面,如果长期用302做永久迁移,可能导致权重分散,较大比例的重定向配置错误,都是因为混淆了301和302。
如何用curl查看返回码
命令行执行:
curl -I https://www.example.com
第一行会显示HTTP/2 200或HTTP/1.1 301等,加-L参数可以跟随重定向,用-w "%{http_code}"只输出状态码。
301和302对比表
| 特性 | 301 | 302 |
|---|---|---|
| 含义 | 永久移动 | 临时移动 |
| 搜索引擎权重 | 转移到新URL | 保留原URL |
| 浏览器缓存 | 长期缓存 | 不缓存或短缓存 |
| 适用场景 | 换域名、HTTPS升级 | 促销、维护、A/B测试 |
| HTTP/1.1方法保持 | 可能变GET | 通常保持方法 |
网站返回502错误怎么解决?从排查到修复的完整路径
502 Bad Gateway是运维最头疼的错误之一,用户看到的是“502 Bad Gateway”,背后可能是后端服务挂了,业内专家指出,相当一部分502错误源于后端服务进程崩溃。
502错误的常见原因
- 后端服务(PHP-FPM、Tomcat、Node.js)进程崩溃或未启动。
- Nginx与后端之间的连接超时。
- 后端响应头过大,超过Nginx的proxy_buffer_size。
- 防火墙或安全组阻断了内部端口。
- 后端服务器负载过高,无法处理请求。
排查步骤
- 检查后端服务状态,比如
systemctl status php-fpm或ps aux | grep java。 - 查看Nginx错误日志:
tail -f /var/log/nginx/error.log,找到“connect() failed”或“upstream timed out”等关键词。 - 直接访问后端端口,用
curl http://127.0.0.1:9000或telnet 127.0.0.1 8080测试连通性。 - 检查Nginx配置中的proxy_pass地址和端口。
- 调整超时参数:
proxy_connect_timeout 60s; proxy_read_timeout 60s;。 - 如果后端是PHP-FPM,检查
pm.max_children是否太小,导致进程耗尽。
实操命令示例
查看Nginx错误日志:
tail -100 /var/log/nginx/error.log | grep 502
测试后端:
curl -v http://127.0.0.1:8080/health
重启服务:
systemctl restart php-fpm nginx
HTTP状态码大全及含义:按类别快速查阅
这里把常见的状态码按类别列出来,方便你遇到问题时快速定位。
1xx信息类
- 100 Continue:客户端应继续发送请求体。
- 101 Switching Protocols:切换协议,如WebSocket升级。
2xx成功类
- 200 OK:请求成功。
- 201 Created:资源创建成功,常用于POST。
- 202 Accepted:请求已接受,但未处理完。
- 204 No Content:成功但无返回内容,常用于DELETE。
- 206 Partial Content:断点续传或分片下载。
3xx重定向类
- 301 Moved Permanently:永久重定向。
- 302 Found:临时重定向。
- 303 See Other:强制用GET访问新URL。
- 304 Not Modified:缓存有效。
- 307 Temporary Redirect:临时重定向,保持原方法。
- 308 Permanent Redirect:永久重定向,保持原方法。
4xx客户端错误
- 400 Bad Request:请求语法错误。
- 401 Unauthorized:需要认证。
- 403 Forbidden:服务器拒绝访问。
- 404 Not Found:资源不存在。
- 405 Method Not Allowed:方法不被允许。
- 408 Request Timeout:请求超时。
- 429 Too Many Requests:请求过多,限流。
5xx服务器错误
- 500 Internal Server Error:服务器内部错误。
- 501 Not Implemented:服务器不支持请求方法。
- 502 Bad Gateway:网关错误。
- 503 Service Unavailable:服务不可用。
- 504 Gateway Timeout:网关超时。
北京地区HTTP状态码查询与CDN节点异常排查
如果你在北京地区运营网站,用户反馈访问异常,可以查CDN节点返回码,用dig查看域名解析到哪个CDN节点,然后指定节点IP请求:
dig www.example.com +short curl -I --resolve www.example.com:443:1.2.3.4 https://www.example.com
如果北京节点返回502,而其他地区正常,可能是该节点回源失败,联系CDN厂商刷新节点缓存,或临时切到备用节点,据工信部数据,国内网站采用HTTP/2和HTTP/3的规模在持续扩大,CDN节点状态码监控已成为运维标配,近年来,CDN厂商提供了状态码监控面板,可以按地域筛选。
关于HTTP服务器返回码的常见疑问解答
HTTP返回码和状态码是一回事吗?
是一回事,HTTP返回码、HTTP状态码、HTTP响应码都指同一个东西,英文叫HTTP status code,只是叫法不同。
为什么浏览器看不到3xx返回码?
因为浏览器会自动跟随重定向,你看到的是最终页面的200,要查看3xx,可以用curl命令行,或者在浏览器开发者工具的Network面板勾选“Preserve log”,就能看到中间的301或302。
HTTP/2和HTTP/3的返回码有区别吗?
没有区别,状态码的定义是语义层面的,跟HTTP版本无关,HTTP/2和HTTP/3只是传输方式变了,三位数字的含义保持不变,例如HTTP/2下同样有200、404、503。
HTTP服务器返回码是Web通信的基础语言,掌握五大类状态码,搞清301和302的区别,遇到502时知道从哪里下手排查,你就能更快定位问题,无论你是开发还是运维,这份状态码知识都值得放在手边。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/686409.html





