我使用正则表达式服务器名称进行以下Nginx配置,因此我可以轻松添加静态站点而无需添加新配置条目:
server {
server_name ~^(?<domain>.+)$;
root /home/static/sites/$domain;
access_log /var/log/nginx/$domain-static-access.log;
error_log /var/log/nginx/$domain-static-error.log;
}
这适用于提供网站,访问日志最终会在例如根据需要/var/log/nginx/example.com-static-access.log
。但错误日志最终在/var/log/nginx/$domain-static-error.log
。它不会插入该正则表达式捕获的值。
知道如何解决这个问题吗?
答案 0 :(得分:2)
只有一些nginx配置指令支持变量。是否明确记录了特定参数中特定配置指令是否支持变量。例如,access_log
指令description说:
文件路径可以包含变量(0.7.6+),但是这些日志有一些约束......
error_log
指令根本不支持变量,因此description没有提及变量支持。请注意,这是故意的:错误日志用于记录错误,包括内存分配错误等低级错误,错误记录旨在避免可能失败的操作。
换句话说,error_log
不支持变量,也没有计划添加这样的支持。请改用一些固定名称。
答案 1 :(得分:1)
那么,看看this。实际上,似乎error_log
路径不能接受nginx配置文件中的变量。