允许nginx根据域dynamic更改日志位置

我们有nginx设置了大约5个域名。 每个域都有与之相关的特定IP。 当一个请求到达一个IP时,nginx将这个请求引导到相关的站点,而不pipe这个请求来自哪个域。

例如,我们的网站是parent.com,位于192.168.1.1。 child.com的Alogging指向192.168.1.1。 因此,nginx会将所有对child.com的请求发送给parent.com(Parent.com正在运行一个SaaS设置并自动检测到所请求的域)。 这一切都很好。

我们现在要做的是为每个域定义一个独立的日志文件。 现在我们的configuration文件定义了一个静态的日志位置。 我们要修改这个,以便根据访问的域设置日志位置。

我们目前的日志指令:

access_log /home/parent/_logs/access.log; error_log /home/parent/_logs/error.log; 

我刚刚发现,我可以在我的access_log指令中使用$host ,这足够满足我们的需求。

我们的新access_log指令是:

 access_log /home/parent/_logs/$host.access.log 

而且这似乎是完美的。

你的“解决scheme”与$主机variables是丑陋的。 你试一试 …

 curl -H "Host: abc" http://parent.com curl -H "Host: def" http://parent.com curl -H "Host: 123" http://parent.com curl -H "Host: 321" http://parent.com curl -H "Host: xyz" http://child.com curl -H "Host: zyx" http://child.com curl -H "Host: 456" http://child.com curl -H "Host: 654" http://child.com 

…并查看/home/parent/_logs/目录。

使用server_name parent.com;定义两个server {}部分server_name parent.com;server_name child.com并在access_log指令中使用variables$server_name