使用 lighttpd 通过 URL 提供端口服务

使用 lighttpd 通过 URL 提供端口服务

设置和目标

我在 Raspberry Pi 上运行 Lighttpd 服务器(版本:lighttpd/1.4.53 (ssl))。此服务器最初由pi 孔,我开始使用它来管理我的网络。我已经成功将它关联http://raspi.home到我的树莓派 IP。

该设备已经运行了多项服务,例如R-shiny 服务器在端口 3838 上家庭助理安装在端口 8123 上,这样我就可以分别通过http://raspi.home:3838/和访问http://raspi.home:8123

我的目标是现在能够通过用户友好的地址访问我的服务,例如 http://raspi.home/shiny(端口 3838)和http://raspi.home/homeassistant(端口 8123)。

由于 lighttpd 服务器是为 pi-hole 配置的,因此/var/www/html/只包含两个文件夹:“pihole”和“admin”。我可以通过 pi-hole 访问管理面板,http://raspi.home/admin虽然http://raspi.home/pihole可以访问,但用处不大。

我的目标是使浏览http://raspi.home/shiny/...服务http://raspi.home:3838/...(对于 homeassistant 来说也是一样)。

迄今进展

我正在修改/etc/lighttpd/external.conf,它添加了/etc/lighttpd/lighttpd.conf(代码这里)。我尝试了各种方法,但是 lighttpd conf 文件对我来说相当混乱,我不知道应该把什么放在根级别,还是放在$HTTP["url"].

到目前为止最有效的是添加带有服务器定义的 URL 映射:

$HTTP["url"] =~ "^/shiny" {
    proxy.header = (
        "map-urlpath" => ( "/shiny" => "/" ),
        "upgrade" => "enable"
    )
    proxy.server = ( "" => ( ( "host" =>  "localhost", "port" => 3838) ) )
}

不幸的是,这也改变了所有相对 URL,因此http://raspi.home/shiny/index.html搜索的是中的任何图像http://raspi.home/images/image.png,而不是http://raspi.home/shiny/images/image.png。因此,找不到任何资源。

如果我删除该条件,映射将是全局的,因此应用程序可以使用,但由于所有内容都已映射,因此所有其他站点现在都无法使用。这在这个错误但我无法使提供的解决方案发挥作用。

我尝试过"map-urlpath" => ( "/shiny(.*)$" => "/$1" )但意外地抛出了 404 错误(无论有没有条件)。

资源

以下是更多可能相关/有用的资源:

它们对我来说不起作用,要么是因为我没有把代码放在正确的位置,要么是因为不适合我的情况,谁知道呢......

答案1

$HTTP["url"] =~ "^/shiny" {
    proxy.server = ( "" => ( ( "host" =>  "192.168.1.138", "port" => 3838 ) ) )
}

删除proxy.header直到您更好地理解它能做什么和不能做什么。

https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy

proxy.header "map-urlpath"会修改 HTTP 标头的请求行,但 lighttpd 不会重写响应主体,因此您的 R-shiny 服务器必须了解它根植于 /shiny/。我还没有查看 R-shiny 是否可行。

另一种方法是创建 DNS 名称 shiny.raspi.home 和 homeassistant.raspi.home,然后可以配置 lighttpd 进行反向代理

$HTTP["host"] =~ "shiny.raspi.home" {
    proxy.server = ( "" => ( ( "host" =>  "192.168.1.138", "port" => 3838 ) ) )
}

请注意,我在上面的例子里更改了目标"port",因为我猜测这是你希望 lighttpd 将请求反向代理到的反向代理目标主机和端口http://shiny.raspi.home/

相关内容