首页  >  问答  >  正文

java-ee - nginx反向代理tomcat时资源文件处理问题

nginx上配置如下


48 location ^~ /bgmonitor/ { 50 proxy_pass http://localhost:8080/; 51 }

形如www.mr.org/bgmonitor的请求转发到本地8080端口的tomcat

tomcat配置如下

 <Context docBase="/Users/mr/Documents/code_pool/bgmonitor-git/bgmonitor-web/target/bgmonitor" path="" reloadable="true"/>

页面渲染使用velocity,资源文件引用路径为:

   <!-- bootstrap 3.0.2 -->
    <link href="${rc.contextPath}/css/bootstrap.css" rel="stylesheet" type="text/css"/>
    <!-- font Awesome -->
    <link href="${rc.contextPath}/css/font-awesome.min.css" rel="stylesheet" type="text/css"/>
    <!-- Ionicons -->
    <link href="${rc.contextPath}/css/ionicons.min.css" rel="stylesheet" type="text/css"/>
    <!-- Theme style -->
    <link href="${rc.contextPath}/css/AdminLTE.css" rel="stylesheet" type="text/css"/>

现象

访问时由于${rc.contextPath}取出为空,导致整个资源路径变为/css/AdminLTE.css ,这个请求发到nginx后就没法正常转发啦

怎么做才能在最小修改的情况下让整个应用正常?

迷茫迷茫2713 天前587

全部回复(2)我来回复

  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:25:08

    静态文件不需要转发,在 nginx 本机上部署静态文件,比如

    location ~* ^/(?:images/|js/|css/) {
        root /home/app/htdocs;
    }
    

    具体如何配置参考文档

    回复
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:25:08

    详见博客:
    http://blog.iaceob.name/nginx-proxy/
    以及
    http://blog.iaceob.name/tomcat-multi-domain-binding/

    便是我使用的解决方案, 只是我个人这么使用而已, 暂未发现有别人这么使用过.

    回复
    0
  • 取消回复