我的 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-once
m.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_ajp13自 lighttpd 1.4.59 起使用 Apache jserv 协议访问您的 Tomcat 服务器。