nginx:如果目录不存在则创建目录

时间:2016-01-25 14:47:48

标签: nginx

我是nginx的新手,我有一个给定的nginx配置。 有一个映射,如:

map $http_host $my_customer {
  default "default";
  "~*cust1" "cust1";
  "~*cust2" "cust2";
}

还有access_log行:

access_log /my/log/path/access.log

现在我想为每个客户提供单独的日志目录和日志文件,因此我将access_log行更改为:

access_log /my/log/path/$my_customer/access.log

如果$my_customer - 目录已经存在,这样可以正常工作。但如果它不存在,则nginx不会记录。我知道如何检查目录是否存在:

if (!-d /my/log/path/$my_customer) {}

但是如何在nginx配置文件中创建目录呢?

1 个答案:

答案 0 :(得分:2)

为了启动nginx进程,必须事先创建所有目录 dir的所有者应该由nginx配置文件中定义的工作进程使用(默认为/etc/nginx/nginx.conf)。
用户应具有此目录的写权限。

正如@Alexey Ten注意到的那样,使用默认日志位置并不错: /var/log/nginx/$my_customer.access.log

否则,你必须做那样的事情:
mkdir -p -m 755 /my/log/path/$my_customer