Nginx Jetty 架构部署多个Liftweb 应用

Jetty 部署单个Liftweb 应用的教程比比皆是,无非是将Liftweb 应用打包成 WAR 包(root.war)放在 jetty/webapps/ 下

但是如果部署多个Liftweb 应用,就不能打包成root.war,而需要打包成类似于 app1.war 和 app2.war

这时候出现了一个问题,访问应用后所有的 /classpath/* 路径经Nginx 转发之后变成了 /app1/classpath/* ,全部都无法访问了

Google 了一下有这么几个早期的讨论

https://groups.google.com/forum/#!topic/liftweb/oQkMZPiLtp8

https://groups.google.com/forum/#!searchin/liftweb/jetty$20context/liftweb/FJRoJkVMCDM/B71H6M_xhkMJ

但都未配置成功,后来只好在Nginx 里面做文章,

代码如下

server{
        listen 80;
        server_name app1.com;
        location / {
                if ( $uri ~* "/app1*"){rewrite ^/app1(.*)$ http://app1.com$1 last;}
                proxy_set_header Host $http_host;
                proxy_pass http://127.0.0.1:8080/app1/;
        }
}

经测试上面的不是很稳定,表单失效了,S.notice 类也失效了,好在又有新的资料发现

http://scala-programming-language.1934581.n4.nabble.com/Context-path-proxies-amp-Lift-td1979313.html

最终的解决方案为Jetty 虚拟主机,Nginx 代码如下

server{
        listen 80;
        server_name app1.com;
        location / {
                proxy_set_header Host $http_host;
                proxy_pass http://127.0.0.1:8080;
        }
}
然后在Jetty 的context 下(6版本)或者webapps 下面(9版本,未测)新建app1.xml 文件,添加如下内容

<?xml version="1.0" encoding="ISO-8859-1" ?>
        <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
        <Configure class="org.mortbay.jetty.webapp.WebAppContext">

            <Set name="war"><SystemProperty name="jetty.home" />/webapps/app1.war</Set>
            <Set name="contextPath">/</Set>
            <Set name="virtualHosts">
                <Array type="java.lang.String">
                    <Item>app1.com</Item>
                </Array>
            </Set>

        </Configure>


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值