2007年5月10日星期四

让AjaxTerm与lighttpd一起工作

AjaxTerm是一个能够通过Web页面提供的Terminal程序,其作者认为它最大的一个特点就是安装容易。不过其网站上提供的配置信息都是以Apache HTTP Server为例配置的,而我用的是lighttpd

安装AjaxTerm很容易,因为已经有现成的ebuild,而且还有专门的init脚本用于启动服务器。不过我还得把它集成到我对Web服务器上。开始我只是把Apache的配置简单翻译成lighttpd的语法,当然还要调整适应我的需求。我要把它映射到“/ajaxterm”上,而且还要用HTTPS,就象下面这样:
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/ssl/certs/lighttpd.pem"

proxy.server = ( "/ajaxterm" =>
( "localhost" =>
(
"host" => "127.0.0.1",
"port" => 8022
)
)
)
}
结果出现了下面这样的情况。



不过如果我绕过lighttpd,直接连接AjaxTerm服务器http://localhost:8022就没有问题。我在网上搜索了一下,发现也有人提到遇到同样的问题,但是好像没有得到解决。

用FireBug我能看到ajaxterm.js中XMLHttpRequest发出的请求的URL居然是http://localhost/u,而不是我希望的http://localhost/ajaxterm/u。在仔细看Apache的配置
ProxyPass /ajaxterm/ http://localhost:8022/
ProxyPassReverse /ajaxterm/ http://localhost:8022/
原来人家后面也有个“/”,也就是需要映射到“/ajaxterm/”上,如果需要让“/ajaxterm”也干活,加个redirect就行了。
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/ssl/certs/lighttpd.pem"

proxy.server = ( "/ajaxterm" =>
( "localhost" =>
(
"host" => "127.0.0.1",
"port" => 8022
)
)
)
}

url.redirect = (
"^/ajaxterm$" => "/ajaxterm/"
)
现在,终于能看到令人高兴的画面了。

没有评论: