我们在 loadbalncer 后面有多个服务器,我们希望每台机器的访问日志以它访问前缀作为 hosname 和在 lighttpd 中的 accesslog 的方式访问。
例如 :
192.168.1.1-access.log
192.168.1.2-access.log
我尝试使用include_shell
参数并有一个脚本hostname.sh
,但它不符合我的目的。
我认为你可能试图过度复杂化这个问题,你不能只做以下事情吗?
$SERVER["socket"] == “192.168.1.1:80″ {
accesslog.filename = "/var/log/lighttpd/192.168.1.1-access.log"
}
您还提到您在使用 include_shell 时遇到问题,请尝试以下操作
lighttpd.conf
include_shell "/etc/lighttpd/scripts/servername.sh"
accesslog.filename = "/var/log/lighttpd/" + var.servername + "-access.log"
scripts/servername.sh - 用于主机名
#!/bin/bash
echo 'var.servername="'$(uname -n)'"'
或者
scripts/servername.sh - 用于 IP 地址
#!/bin/bash
echo 'var.servername="'$(/sbin/ifconfig | sed -n '2 p' | awk '{print $2}' | sed s/addr://g)'"'
(更改 sed 和 awk 参数以在多个接口上为您获取正确的 IP)
这将为您提供您正在寻找的东西。
或者,只需将 cat accesslog.filename = "/var/log/lighttpd/" +
uname -n+ "-access.log"
放在配置文件的末尾即可获得便宜且肮脏的解决方案。