Lighttpd 代理 tomcat 路径

Lighttpd 代理 tomcat 路径

我的 tomcat 服务于 2 个站点

ROOT -> Main-site
/mobile -> dedicated mobile website 

我已经将 lighttpd 配置为代理

$HTTP["host"] =~ "www.my-site.at" {
        proxy.server = ( "" => (
                        ( "host" => "127.0.0.1",
                          "port" => 8080
                        )
                ))
}

我如何告诉 lighttpd 使用http://127.0.0.1:8080/mobile对于 m.my-site.at?还是我必须配置第二个 tomcat 并在 ROOT 下部署移动网站?

谢谢

答案1

可以使用url.rewrite-oncem.my-site.at在所有请求前加上前缀/mobile

$HTTP["host"] == "m.my-site.at" {
    url.rewrite-once = ( ".*" => "/mobile$0" )
    proxy.server = (...)
}

您可能需要mod_rewrite先加载mod_proxy才能使其正常工作。

此类重写的问题在于后端现在看到的路径与浏览器视图不匹配。后端可能会尝试发出带有前缀的路径,/mobile或者使用相对路径进行其他令人困惑的操作。某些代理可能会尝试在响应中修复这些路径,但 lighttpd 不会(而且您永远无法捕获所有路径)。

真正的解决方案是让后端理解虚拟主机 - 即根据主机名处理不同的请求。如果后端无法做到这一点,您可能需要运行多个实例,是的。

答案2

我如何告诉 lighttpd 使用http://127.0.0.1:8080/mobile针对 m.my-site.at?

使用lighttpd.confproxy.header添加"map-urlpath"/mobile

lighttpd mod_proxy

作为替代方案lighttpd mod_proxy, 您可以使用lighttpd mod_ajp13自 lighttpd 1.4.59 起使用 Apache jserv 协议访问您的 Tomcat 服务器。

相关内容