0

我们在 loadbalncer 后面有多个服务器,我们希望每台机器的访问日志以它访问前缀作为 hosname 和在 lighttpd 中的 accesslog 的方式访问。

例如 :

192.168.1.1-access.log 192.168.1.2-access.log

我尝试使用include_shell参数并有一个脚本hostname.sh,但它不符合我的目的。

4

1 回答 1

0

我认为你可能试图过度复杂化这个问题,你不能只做以下事情吗?

$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"放在配置文件的末尾即可获得便宜且肮脏的解决方案。

于 2012-11-01T11:26:19.237 回答