Проксировать локальные сервисы через Lighttpd - готовые рецепты
Добавлено: 03 май 2026, 15:03
Lighttpd - простой и экономичный http сервер, и я считаю его основное преимущество это экономия памяти.
Мой лайти, на котором включено всё нижеперечисленное и даже больше, потребляет 11 Мб памяти. А самые простые конфигурации потребляют мегабайта 4. Единственный недостаток лайти - невозможность подключиться к https бекенду.
Сегодня озу - дорогая штука, а иногда хочется удобства.
Зачем вообще проксировать локальные сервисы?
Например, если у тебя есть какой-нибудь домашний мини-сервер где ты запустил кучку мини сервисов, и не хочется запоминать все эти сложные порты, можно сделать прокси на лайти, и иметь доступ через url например server.local/transmission/ или server.local/gerbera/
Переходим к сути:
Если уже есть готовая папка с конфигурацией лайти, как например в fedora, нужно создать директорию /etc/lighttpd/conf-enabled
И внутри создавать локальные конфигурации.
Например:
Конфигурация для adminer/phpmyadmin:
Самый простой прокси, для stork
В stork-server должна быть настроена опция BASE_URL:
Прокси для transmission
Тут уже более сложный вариант. Мы указываем в настройках хост (localhost) и говорим лайти чтобы он подменял адрес хоста в запросах, таким образом трансмишен всегда будет думать что обращение идёт с локалхоста, и не нужно править настройки трансмишена.
Прокси для герберы
В гербере можно не править дефолтные настройки, но настоятельно рекомендуется сделать адрес сервера с герберой постоянным. Тут аналогично с трансмишеном мы используем подмену имени хоста, но ещё и переписываем url, т.к. герберу насколько я знаю не получится настроить на работу с путями. И нужно учитывать, что при использовании подобных трюков, нужно не забывать добавлять в конце url слеш.
Например server.local/gerbera/
Как сделать забавные страницы для ошибок:
Как сделать листинг директории со свистелками и перделками:
/iso тут является алиасом на папку с исошниками
Как включить ssl и ipv6:
Как прикрутить авторизацию
В примере указано как сделать авторизацию на весь сервер целиком. Допускается встраивать эту авторизацию между условиями например в $HTTP["url"]
Пожалуйста не забывайте что данный материал это коллекция "быстрых рецептов" а не попытка переписать вики от лайти.
К сожалению тут пока нет информации про home assistant, поскольку hass ну вообще никак не дружит с путями (server.local/hass/ сделать не получится, ни один клиент это не съест)
Зато можно не открывать лишние порты в фаерволе для остальных сервисов. И не нужно забивать голову лишними настройками. Надеюсь что-нибудь из этого окажется для вас полезным.
Мой лайти, на котором включено всё нижеперечисленное и даже больше, потребляет 11 Мб памяти. А самые простые конфигурации потребляют мегабайта 4. Единственный недостаток лайти - невозможность подключиться к https бекенду.
Сегодня озу - дорогая штука, а иногда хочется удобства.
Зачем вообще проксировать локальные сервисы?
Например, если у тебя есть какой-нибудь домашний мини-сервер где ты запустил кучку мини сервисов, и не хочется запоминать все эти сложные порты, можно сделать прокси на лайти, и иметь доступ через url например server.local/transmission/ или server.local/gerbera/
Переходим к сути:
Если уже есть готовая папка с конфигурацией лайти, как например в fedora, нужно создать директорию /etc/lighttpd/conf-enabled
И внутри создавать локальные конфигурации.
Например:
Конфигурация для adminer/phpmyadmin:
Код: Выделить всё
server.modules += ( "mod_fastcgi" )
server.modules += ( "mod_alias" )
alias.url += ( "/adminer" => "/var/www/adminer/" )
$HTTP["url"] =^ "/adminer" {
index-file.names += ( "index.php" )
fastcgi.server = ( ".php" => ( "adminer" => ( "socket" => "/var/run/php-fpm/www.sock", "broken-scriptfilename" => "enable") ) )
}
В stork-server должна быть настроена опция BASE_URL:
Код: Выделить всё
server.modules += ( "mod_proxy" )
$HTTP["url"] =^ "/stork" { proxy.server = ( "" => ( ( "host" => "localhost", "port" => "8080") ) ) }
Тут уже более сложный вариант. Мы указываем в настройках хост (localhost) и говорим лайти чтобы он подменял адрес хоста в запросах, таким образом трансмишен всегда будет думать что обращение идёт с локалхоста, и не нужно править настройки трансмишена.
Код: Выделить всё
$HTTP["url"] =^ "/transmission" {
proxy.server = ( "" => ( "localhost" => ( "host" => "localhost", "port" => "9091") ) )
proxy.replace-http-host = "enable"
}
В гербере можно не править дефолтные настройки, но настоятельно рекомендуется сделать адрес сервера с герберой постоянным. Тут аналогично с трансмишеном мы используем подмену имени хоста, но ещё и переписываем url, т.к. герберу насколько я знаю не получится настроить на работу с путями. И нужно учитывать, что при использовании подобных трюков, нужно не забывать добавлять в конце url слеш.
Например server.local/gerbera/
Код: Выделить всё
$HTTP["url"] =^ "/gerbera" { proxy.server = ( "" => ( "192.168.0.1" => ( "host" => "192.168.0.1", "port" => "49152")) )
proxy.replace-http-host = "enable"
proxy.header = ( "map-urlpath" => ( "/gerbera" => "" ) )
}Код: Выделить всё
server.errorfile-prefix = server_root + "/lighttpd/errors/"/iso тут является алиасом на папку с исошниками
Код: Выделить всё
$HTTP["url"] =^ "/iso" {
dir-listing.activate = "enable"
dir-listing.show-header = "enable"
dir-listing.set-footer = "<img src=/tftpboot/d/nyan.gif height=200 />"
}Код: Выделить всё
$SERVER["socket"] == "[::]:80" { }
server.modules += ( "mod_openssl" )
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/ssl/cert.crt"
ssl.privkey = "/etc/ssl/private/key.key"
}В примере указано как сделать авторизацию на весь сервер целиком. Допускается встраивать эту авторизацию между условиями например в $HTTP["url"]
Код: Выделить всё
server.modules += ( "mod_authn_file" )
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/etc/lighttpd/http.passwd"
auth.require = ( "/" =>
(
"method" => "basic",
"realm" => "private-property",
"require" => "valid-user"
)
)К сожалению тут пока нет информации про home assistant, поскольку hass ну вообще никак не дружит с путями (server.local/hass/ сделать не получится, ни один клиент это не съест)
Зато можно не открывать лишние порты в фаерволе для остальных сервисов. И не нужно забивать голову лишними настройками. Надеюсь что-нибудь из этого окажется для вас полезным.