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

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

我们为 nginx 设置了大约 5 个域。每个域都有一个与之关联的特定 IP。当请求来自某个 IP 时,nginx 会将该请求定向到相关站点,无论请求来自哪个域。

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

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

我们当前的日志指令:

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

答案1

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

我们的新 access_log 指令是:

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

而且它看起来运行良好。

答案2

您的“解决方案”与 $host 变量不匹配。试试看...

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 {}部分server_name parent.com;server_name child.com$server_nameaccess_log 指令中的变量代替。

相关内容