前段时间做了个网站,在本地tomcat测试都没有问题,但是部署到阿里云上之后,系统样式全没了。jsp等动态页面访问正常。

  打开浏览器监控发现所有的css 和js 文件返回都是404 。直接访问单个的css 文件也同样是404。以为是路径错了,于是一一对了一遍各个文件的路径和服务器上 tomcat路径方面的设置

  发现路径没有问题。在网站更目录创建一个css文件和html文件均不能访问。确认不是网站路径的问题。

  然后怀疑是tomcat 和 Apache 冲突了,或者可能是Apache 的设置不对。因为阿里云是默认的镜像,里面已经装了Apache和tomcat。也没有做什么设置。

  于是直接把Apache 服务停止。但是还是没有用,依然无法访问css 和html 页面。

  然后怀疑是不是服务器js 和css 这两个文件的目录权限有问题,查看了这两个文件夹的权限。没有问题,

  而且在jsp文件能访问的目录,直接创建一个js 文件,同样不能访问。于是权限的怀疑被排除。

  想了半天还是不知道到底是哪配置不对。然后突然想到所有的请求都是nginx 分发的。 是不是nginx 的配置不对。但是一想nginx 配置不对的话,那网站都不能访问啊。为什么jsp 页面能访问而静态文件不行。 带着这个疑问,去查看下nginx的配置,打开nginx conf文件夹中的nginx.conf,果然发现了nginx配置可疑的地方。

  server
  {
    listen 80;
    server_name localhost;
    index index.html index.htm index.jsp;
    root /var/www/web/ROOT;

    location ~ .*.jsp$
    {
      index index.jsp;
      proxy_pass http://localhost:8080;
    }

    locattion *.jsp$ 的意思就是所有jsp的页面均交由tomcat处理。
    root 就是网站的资源存放路径。

    终于清楚了,服务器把所有的请求都是由nginx 转发。nginx 会把 jsp 的请求转给tomcat 来处理,

    至于静态资源的请求 nginx 直接就处理了,直接把资源文件返回给客户端,无需tomcat 处理。

    于是修改root 的设置, 将地址指向实际的网站资源文件的地址。 回到页面重新测试,果然好了。

    刚开始不知道原因,各种测试,各种改代码,服务器相关的设置都改了一遍。知道真相之后,其实要解决非常简单。

tomcat 无法加载js和css 等静态文件的问题的更多相关文章

  1. 动态加载js和css

    开发过程中经常需要动态加载js和css,今天特意总结了一下常用的方法. 1.动态加载js 方法一:动态加载js文件 // 动态加载js脚本文件 function loadScript(url) { v ...

  2. 动态加载js、css 代码

    一.原生js: /** * 加载js和css文件 * @param jsonData.path 前缀路径 * @param jsonData.url 需要加载的js路径或css路径 * @param ...

  3. 动态加载js和css的jquery plugin

    一个简单的动态加载js和css的jquery代码,用于在生成页面时通过js函数加载一些共通的js和css文件. //how to use the function below: //$.include ...

  4. PHP:如果正确加载js、css、images等静态文件

    日常中,我们想要把一些静态页面放在框架上或者是进行转移时,那么静态页面上的原url加载js.css.images都会失效,那么我们应该怎么进行修改捏? 现在仓鼠做个笔记哈 这里有几个注意项: 1.路径 ...

  5. Maven工程webinfo下面的JSP页面无法加载.js、.css文件的解决方案

    --下面是我的工程路径 --我jsp的写法 -----启动工程,访问js文件的路径是这样的, href="http://localhost:8080/activiti/css/public. ...

  6. Nginx设置Js、Css等静态文件的缓存过期时间

    location ~.*\.(js|css|html|png|jpg)$ { expires 3d; } expires    3d; //表示缓存3天 expires    3h; //表示缓存3小 ...

  7. js插件动态加载js、css解决方案

    最近因为工作需要做了一个js自动导入的插件,一开始很天真的以为动态创建个script添加到head中就ok了,试了之后才发现了问题,就是如果同时引入了多个js文件,而且后一个文件中用到了前一个文件中的 ...

  8. 经验总结:按需加载JS和css

    项目中做过这样的事情:所有页面都通过SSI指令 include这样一份public-js.shtml, 用来引入涉及到的js(包括公共的脚本 验证插件 自定义组件等),但是一些没有交互效果的页面根本不 ...

  9. Yii2 灵活加载js、css

    Yii2.0对于CSS/js 管理,使用AssetBundle资源包类. 视图如何按需加载CSS/JS ? 资源包定义: backend/assets/AppAsset.PHP <?php na ...

随机推荐

  1. 【POJ 3261】Milk Patterns 可重叠的k次最长重复子串

    可重叠的k次最长重复子串 #include<cstdio> #include<cstring> #include<algorithm> using namespac ...

  2. 单例模式(Singleton Pattern)

    意图 保证一个类仅有一个实例,并提供一个该实例的全局访问点 可将一个实例扩展到n个实例.限定某类最多只能创建n个实例. 双重锁定实现单例模式 C# public sealed class Single ...

  3. Mybatis 操作数据库的主键自增长

    本篇文章将研究mybatis 实现oracle主键自增的机制 首先我们看对于同一张student表,对于mysql,sql server,oracle中它们都是怎样创建主键的 在mysql中 crea ...

  4. nutch1.4 在windows下面提示 java.io.IOException: CreateProcess error=2, ϵͳÕҲ»µ½ָ¶

    eclipse运行nutch1.4在window下面提示异常解决 需要安装cynwin,被设置环境变量 1:安装cygwin 注:在选择要安装的软件包的时候我选择了在All这一行上后面的Default ...

  5. js json 对象相互转换

    字符串转对象(strJSON代表json字符串)   var obj = eval(strJSON);   var obj = strJSON.parseJSON();   var obj = JSO ...

  6. VS2013无法启动IIS Express Web的解决办法

    关于 ASP.NET Web 开发服务器.本地 IIS和 IIS Express 的区别,请参见<VS2013无法启动IIS Express Web的解决办法>, 此文章最后提到的部分,即 ...

  7. Mybatis 保错:Mapped Statements collection already contains value for jaxrs.dch.projects.y

    原因是mapper.xml中定义了相同的两个方法

  8. MongoDB安装与启动

    我本人电脑是win8系统64位,下载64位的zip包,下载完成后解压缩到D:\MongoDB目录 创建数据库目录D:\MongoDB\data,接下来打开命令行窗口,切换到D:\MongoDB\bin ...

  9. 关于AWR报告命中率指标的解释(转)

    文章转自:http://blog.itpub.net/24558279/viewspace-762371/ 从Oracle 10g开始,Oracle给广大DBA提供了一个性能优化的利器,那便是Auto ...

  10. bash 操作 sqlite3

    首先,这是个奇怪的需求...但是遇到了.我参考后文链接里的方法,做了自己的. 表是自己手动建的,数据库名字叫 new.db: create table test (sn varchar(), name ...