如何在 Tomcat 8 中将多个 exploded webapps(在 $CATALINA_BASE/webapps 之外)设置为 ROOT?
How to set up multiple exploded webapps (outside of $CATALINA_BASE/webapps) as ROOT in Tomcat 8?
这是我需要的摘要:
- 运行 个 Tomcat 8 实例中的多个应用程序。
- 这些应用程序已展开(未打包为 WAR),需要位于 /misc/
- 他们需要运行作为ROOT(即URL末尾没有上下文路径)
我已经通过使用 Tomcat 的虚拟主机成功地将多个应用程序作为 ROOT 操作。在 /var/lib/tomcat8/conf/server.xml
中,我有:
<Host name="qa01" appBase="qa01"
unpackWARS="true" autoDeploy="true">
<Alias>qa01.example.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="qa01_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
然后,我将 nginx 配置为:
server {
listen 80;
listen [::]:80;
server_name qa01.example.com;
access_log /var/log/nginx/qa01-access.log;
error_log /var/log/nginx/qa01-error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
到目前为止一切顺利,我测试了它,它肯定指向 /var/lib/tomcat8/qa01/ROOT/index.html
当我需要这个应用程序改为 /misc/qa01/webapps/ROOT/
时,问题就来了。
我试过用下面的方法添加 /var/lib/tomcat8/qa01/ROOT/META-INF/context.xml
但没用。
<Context docBase="/misc/qa01/webapps/ROOT/">
</Context>
有人知道我做错了什么吗?
我建议:
找出我做错了什么(似乎睡个好觉有帮助)。
我需要这个 /var/lib/tomcat8/exampleApp/ROOT/META-INF/context.xml
<Context path=""
antiResourceLocking="false" />
然后我需要在/var/lib/tomcat8/conf/Catalina/exampleApp/ROOT.xml
中配置Context
。这实际上指向我爆炸的 WAR 所在的位置。
<Context docBase="/misc/qa01/webapps/ROOT/">
</Context>
这是我需要的摘要:
- 运行 个 Tomcat 8 实例中的多个应用程序。
- 这些应用程序已展开(未打包为 WAR),需要位于 /misc/
- 他们需要运行作为ROOT(即URL末尾没有上下文路径)
我已经通过使用 Tomcat 的虚拟主机成功地将多个应用程序作为 ROOT 操作。在 /var/lib/tomcat8/conf/server.xml
中,我有:
<Host name="qa01" appBase="qa01"
unpackWARS="true" autoDeploy="true">
<Alias>qa01.example.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="qa01_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
然后,我将 nginx 配置为:
server {
listen 80;
listen [::]:80;
server_name qa01.example.com;
access_log /var/log/nginx/qa01-access.log;
error_log /var/log/nginx/qa01-error.log;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
到目前为止一切顺利,我测试了它,它肯定指向 /var/lib/tomcat8/qa01/ROOT/index.html
当我需要这个应用程序改为 /misc/qa01/webapps/ROOT/
时,问题就来了。
我试过用下面的方法添加 /var/lib/tomcat8/qa01/ROOT/META-INF/context.xml
但没用。
<Context docBase="/misc/qa01/webapps/ROOT/">
</Context>
有人知道我做错了什么吗?
我建议:
找出我做错了什么(似乎睡个好觉有帮助)。
我需要这个 /var/lib/tomcat8/exampleApp/ROOT/META-INF/context.xml
<Context path=""
antiResourceLocking="false" />
然后我需要在/var/lib/tomcat8/conf/Catalina/exampleApp/ROOT.xml
中配置Context
。这实际上指向我爆炸的 WAR 所在的位置。
<Context docBase="/misc/qa01/webapps/ROOT/">
</Context>