Nginx Rewrite 规则中重写日志如何开

作者:袖梨 2026-08-31

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

Nginx 的 rewrite 日志不是默认开启的,需要手动配置 `rewrite_log` 指令并配合 `error_log` 级别来输出重写过程。它主要用于调试 rewrite 规则是否按预期匹配和执行。

开启 rewrite 日志的两个必要条件

必须同时满足以下两点,rewrite 日志才会生效:

  1. 在配置块(如 httpserverlocation)中设置 rewrite_log on;
  2. error_log 的日志级别设为 notice 或更低(如 infodebug),因为 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 在高并发下会产生大量日志,影响性能,调试完毕后应关闭:

  1. 注释或删掉 rewrite_log on;
  2. 或将 error_log 级别调回 warn 或更高

相关文章

精彩推荐