Nginx rewrite日志需同时满足rewrite_log on和error_log级别设为notice或更低才会生效,日志输出至error_log指定文件,调试后应关闭以避免性能影响。
Nginx 的 rewrite 日志不是默认开启的,需要手动配置 `rewrite_log` 指令并配合 `error_log` 级别来输出重写过程。它主要用于调试 rewrite 规则是否按预期匹配和执行。必须同时满足以下两点,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 在高并发下会产生大量日志,影响性能,调试完毕后应关闭: