关于tomcat缺省默认应用配置导致启动两个实例的问题
配置service.xml:
<Host name="localhost" appBase="D:\tools\java\tomcat\apache-tomcat-7.0.16\webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="dabichong" debug="0" reloadable="true" />
使用这种方式存在问题.
发现一个应用程序,启动了两个实例.
造成时间程序执行存在问题,日志打印存在问题.
根据网上的一些资料.说这是apache的bug.
解决方式有三点.
方法一: tomcat依然按照localhost:8080/dabichong访问
nginx反向代理到localhost:8080/dabichong上
nginx配置如下:
location / {
index sys.main.d;
#root D:/tools/java/tomcat/apache-tomcat-7.0.16/webapps/dabichong/;
proxy_pass http://127.0.0.1:8080/; #主要在这里,设置一个代理
proxy_redirect http://127.0.0.1:8080/ /; ##将代理后的链接,回写成127.0.0.1 这样在浏览器上看到的是127.0.0.1
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
方法二:将目录从webapps 中移到其他目录,然后配置host下面的Context
<Context path="" docBase="D:/tools/java/tomcat/apache-tomcat-7.0.22/scm_app/dabichong" debug="0" reloadable="false" useHttpOnly="true">
</Context>
方法三:直接把应用发布到ROOT应用下
service.xml 中的<Context path="" docBase="dabichong" debug="0" reloadable="true" /> 缺省应用配置需要去掉.
nginx中将请求转过来就可以了
location / {
root D:/tools/java/tomcat/apache-tomcat-7.0.22/webapps/dabichong/;
index sys.index.d;
proxy_pass http://127.0.0.1:8080;
}
我选择的是方法三,方便简单.
另外通过应用启动打印出来的日志,确定是启动一个实例还是两个实例.
ok 问题搞定.