Lighttpd 反向代理 HTTPS 到另一台 HTTP 上的服务器

Lighttpd 反向代理 HTTPS 到另一台 HTTP 上的服务器

我有一个在 HTTPS 上运行的 Lighttpd 服务器,我想让服务器上的一个子目录充当在 HTTP 上运行的单独服务器的反向代理。我尝试按照指南进行代理和 URL 重写,但 SSL 设置方式的某些方面造成了干扰。

$SERVER["socket"] == ":81" {
    url.rewrite-once = ( "^/directory/(.*)$" => "/index.html" )
    proxy.server  = ( "" => ( "" => ( "host" => "192.0.0.1", "port" => 123 )))
}

$HTTP["scheme"] == "http" {
     $HTTP["host"] =~ ".*" {
        url.redirect = (".*" => "https://%0$0")
     }
}

$SERVER["socket"] == ":443" {
        ssl.engine = "enable"
        ssl.ca-file = "/etc/lighttpd/fullchain.pem"
        ssl.pemfile = "/etc/lighttpd/server.pem"
        $HTTP["url"] =~ "^/directory/" {
               proxy.server = ( "" => ( "" => ( "host" => "127.0.0.1", "port" => 81)))
        }
}

我的意图是,进入 /directory/ 会将您重定向到 192.0.0.1:123/index.html。我按照本指南其中提到首先将端口 81 重定向到端口 81,然后将端口 81 重定向到第二台服务器。

这似乎不起作用,只是陷入重定向循环,并始终向 https 站点返回 301。

如果我不执行 :81 重定向,我可以让底部的 proxy.server 重定向到正确的位置,但它会保留 /directory/ 结尾,而这不会到达我需要的位置。

谢谢。

答案1

lighttpd 1.4.46 及更高版本在 mod_proxy 中具有允许重新映射 url-path 前缀的功能。请参阅“proxy.header”指令和“map-urlpath”子选项。

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

此功能避免了您尝试使用的双代理配置。

lighttpd 1.4.46 于一年多前发布,最新的 lighttpd 版本是 lighttpd 1.4.51。

相关内容