Skip to content

Netdata via lighttpd v1.4.x

Here is a config for accessing netdata in a suburl via lighttpd 1.4.46 and newer:

$HTTP["url"] =~ "^/netdata/" {
    proxy.server  = ( "" => ("netdata" => ( "host" => "127.0.0.1", "port" => 19999 )))
    proxy.header = ( "map-urlpath" => ( "/netdata/" => "/") )
}

If you have older lighttpd you have to use a chain (such as bellow), as explained at this stackoverflow answer.

$HTTP["url"] =~ "^/netdata/" {
    proxy.server  = ( "" => ("" => ( "host" => "127.0.0.1", "port" => 19998 )))
}

$SERVER["socket"] == ":19998" {
    url.rewrite-once = ( "^/netdata(.*)$" => "/$1" )
    proxy.server = ( "" => ( "" => ( "host" => "127.0.0.1", "port" => 19999 )))
}

If the only thing the server is exposing via the web is netdata (and thus no suburl rewriting required),
then you can get away with just

proxy.server  = ( "" => ( ( "host" => "127.0.0.1", "port" => 19999 )))

Though if it’s public facing you might then want to put some authentication on it. htdigest support
looks like:
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/lighttpd.htdigest"
auth.require = ( "" => ( "method" => "digest", 
                         "realm" => "netdata", 
                         "require" => "valid-user" 
                       )
               )

other auth methods, and more info on htdigest, can be found in lighttpd’s mod_auth docs.


It seems that lighttpd (or some versions of it), fail to proxy compressed web responses.
To solve this issue, disable web response compression in netdata.

Open /etc/netdata/netdata.conf and set in [global]:

enable web responses gzip compression = no

limit direct access to netdata

You would also need to instruct netdata to listen only to 127.0.0.1 or ::1.

To limit access to netdata only from localhost, set bind socket to IP = 127.0.0.1 or bind socket to IP = ::1 in /etc/netdata/netdata.conf.