I have the same basic issue as this question but it wasn't resolved. I have one functioning service, everything runs fine:
HiddenServiceDir /var/www/tor/test1/
HiddenServicePort 80 127.0.0.1:44403
If I attempt to add another HiddenServiceDir directive like this:
HiddenServiceDir /var/www/tor/test1/
HiddenServiceDir /var/www/tor/test2/
HiddenServicePort 80 127.0.0.1:44403
The service in /test1/ fails to connect, but /test2/ loads fine. If I switch the HiddenServiceDir lines around, the top one fails but the second one works fine. My lighttpd config looks like this:
server.document-root = "/var/www/tor/lighttpddefault/files"
server.port = 44401
$SERVER["socket"] == ":44403" {
$HTTP["host"] =~ "(^|\.)XXXXXXXXXXXXXXXX\.onion$" {
server.document-root = "/var/www/tor/test1/files"
}
$HTTP["host"] =~ "(^|\.)XXXXXXXXXXXXXXXX\.onion$" {
server.document-root = "/var/www/tor/test2/files"
}
}
To answer the questions in the linked question; Tor starts successfully each time, does not throw any error messages. Both directories have the same permission. All keys are Tor generated.