在Nginx日志中,状态码3xx表示HTTP重定向,属于客户端需要进一步操作才能完成请求的状态码。以下是详细说明:
3xx状态码表示请求的资源已被移动到新位置,或需要客户端采取额外步骤(如跟随重定向)才能完成请求。常见于URL重定向、负载均衡等场景。
状态码 | 含义 | 典型场景 |
---|---|---|
301 | Moved Permanently(永久重定向) | 域名变更、HTTPS强制跳转 |
302 | Found(临时重定向) | 临时URL跳转(如登录后跳回原页面) |
304 | Not Modified(未修改) | 客户端缓存有效,服务器返回此状态码避免重复传输 |
在Nginx的access.log
中,3xx状态码会记录如下:
192.168.1.100 - - [10/Oct/2023:14:30:00 +0800] "GET /old-url HTTP/1.1" 301 0 "-" "Mozilla/5.0"
301
:状态码0
:响应体大小(重定向通常无响应体)配置了重定向规则
Nginx中可能通过return
或rewrite
指令强制跳转:
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri; # 强制HTTPS
}
应用逻辑触发
后端应用(如PHP、Node.js)可能返回302
跳转(如登录后跳转)。
CDN或代理层处理
某些CDN会自动添加重定向(如HTTP→HTTPS)。
检查Nginx配置
搜索配置文件中return 3xx
或rewrite
规则:
grep -r "return 301" /etc/nginx/
分析日志
过滤日志中的3xx请求:
awk '$9 ~ /^30[12]/ {print $7, $9}' /var/log/nginx/access.log
使用cURL跟踪
通过-v
参数查看重定向过程:
curl -v http://example.com/old-url
Nginx日志中的3xx状态码是重定向的标识,需结合配置和日志判断是否为预期行为。如果是意外的重定向,重点检查服务器配置或后端应用逻辑。