![允许 nginx 根据域动态更改日志位置](https://linux22.com/image/802030/%E5%85%81%E8%AE%B8%20nginx%20%E6%A0%B9%E6%8D%AE%E5%9F%9F%E5%8A%A8%E6%80%81%E6%9B%B4%E6%94%B9%E6%97%A5%E5%BF%97%E4%BD%8D%E7%BD%AE.png)
我们为 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_name
access_log 指令中的变量代替。