在同一服务器上的同一nginx上反向代理多个tomcats

时间:2017-09-13 18:51:14

标签: tomcat nginx reverse-proxy

我在我的服务器上运行了两个不同版本的tomcat,我使用nginx在默认的80端口上反向代理我的流量。现在在我的服务器块中我不能有两个位置/。我尝试使用Context元素在其server.xml中更改tomcat的默认根URL,如下所示。

然后让我的服务器阻止为:

Tomcat 7主页

location /tomsev {
        proxy_pass  http://127.0.0.1:8080;
    }   

    # Tomcat 8 Homepage
    location / {
        proxy_pass  http://127.0.0.1:9506;
    }

这会加载放置在tomcat 8中的所有UI,但不会加载到7.现在我还有一个部署在tomcat 7上的servlet应用程序。经过多次试验和错误后,我最终设法将页面加载但无法加载css,js,mime文件。他们都抛出无法加载资源的错误。我的申请网址是: http://myserver.com/myapplication/landingPage.do

Tomact 7: 将应用程序war文件部署在其webapp文件夹中。

Nginx配置文件:

server {
   listen 80;
   server_name myserver.com;

    # Tomcat 8 Homepage
    location / {
      proxy_pass  http://127.0.0.1:9506;
    }

    location /myapplication/ {
      proxy_pass    http://127.0.0.1:8080/myapplication/landingPage.do;
    }
  }

1 个答案:

答案 0 :(得分:0)

这样做

location /tomsev/ {
    proxy_pass  http://127.0.0.1:8080/;
   sub_filter_once off;
   sub_filter '<head>' '<head>\n<base href="/tomsev/">';
}   

基本上你想改变基本网址。您可以使用nginx过滤器更改它。或者您需要调整tomcat以使用baseurl。有关该

的更多详细信息,请参见下文

https://serverfault.com/questions/380200/adding-a-global-uri-prefix-for-tomcat-web-apps

如果更改tomcat的基本目录,则配置将如下所示更改

location /tomsev/ {
    proxy_pass  http://127.0.0.1:8080/tomsev/;
}   

tomcat服务器中的basedir应为tomsev