nginx rewrite日志需同时满足rewrite_log on和error_log级别设为notice或更低才会生效,日志输出至error_log指定文件,调试后应关闭以避免性能影响。

开启 rewrite 日志的两个必要条件
必须同时满足以下两点,rewrite 日志才会生效:
- 在配置块(如 http、server 或 location)中设置 rewrite_log on;
-
error_log 的日志级别设为 notice 或更低(如 info、debug),因为 rewrite 日志以
notice级别输出
配置示例
在 Nginx 配置文件(如 /etc/nginx/nginx.conf 或站点 conf 中)添加或修改:
error_log /var/log/nginx/error.log notice;
http {
rewrite_log on;
...
}
或者更精准地只在某个 server 块中启用:
server {
error_log /var/log/nginx/my-site-rewrite.log notice;
rewrite_log on;
location /old/ {
rewrite ^/old/(.*)$ /new/$1 permanent;
}
}
注意日志位置和权限
rewrite 日志会输出到 error_log 指定的文件中(不是独立文件),且内容混在 error 日志里,格式类似:
2024/05/20 10:30:15 [notice] 12345#12345: *1 "^(.*)$" matches "/old/test", client: 192.168.1.100, server: example.com, request: "GET /old/test HTTP/1.1", host: "example.com"确保 Nginx 进程对日志路径有写入权限,否则日志无法生成。
调试完成后建议关闭
rewrite_log 在高并发下会产生大量日志,影响性能,调试完毕后应关闭:
- 注释或删掉 rewrite_log on;
- 或将 error_log 级别调回 warn 或更高











