1.静态代理
把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx更擅长于静态资源的处理,性能更好,效率更高。
所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。
1.1 实现方式1(不推荐)
例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid
|doc|ppt|pdf|xls|mp3|wma)$ {
root /opt/static;
}
说明
· ~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配
· 第一个点 . 表示任意字符
· *表示一个或多个字符
· \. 是转移字符,是后面这个点的转移字符
· | 表示或者
· $ 表示结尾
· 整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理
放置静态资源的目录,要注意一下目录权限问题,如果权限不足,给目录赋予权限;
否则会出现403错误 chmod 755
1.2 实现方式2(推荐)
例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)
location ~ .*/(css|js|img|images) {
root /opt/static;
}
xxx/css
xxx/js
xxx/img
xxx/images
我们将静态资源放入 /opt/static 目录下,然后用户访问时由nginx返回这些静态资源
2.实现步骤
首先,修改nginx.conf文件,在location中配置对静态资源的拦截,如果是静态资源,就交给nginx处理,使拦截静态文件目录的方式。
可以实现准备一个web项目,我这里是之前我自己写的一个myweb.war,这其中有一个静态资源image文件夹,我把myweb.war部署在了两个tomcat的webapps目录下,然后将image目录删掉。
因为我上面nginx.conf配置文件中的root定义为了/opt/static,这里是说,在经过这个请求的时候,会拦截css、js、img、image、images这些静态资源文件。而这个myweb.war项目中,我的location设置为了/myweb,所以这里完整的访问路径应该是 http:// 虚拟机ip /myweb (这里的虚拟机ip=root=/opt/static,最后跟上的就是location后面定义的内容)。
这个时候,再次进入浏览器输入地址访问,就可以看到图片正常显示了。