Nginx实现动静分离「建议收藏」

Nginx实现动静分离「建议收藏」前言之前项目中需要用到百度地图,由于项目的特殊环境,所以需要下载百度的离线地图。我们知道,地图的展示其实就是一张张地图的图片展示,我们在网页上浏览查找位置的时候,其实都是在发送图片请求。这些图片请求相对于jsp,servlet来说就是所谓的静态资源,当然服务中的静态资源不仅仅只是图片,像页面样式css文件,js脚本文件这些都可以看着是静态资源。tomcat既可以静态资源也可以处理动态资源。但是…

大家好,又见面了,我是你们的朋友全栈君。

前言

之前项目中需要用到百度地图,由于项目的特殊环境,所以需要下载百度的离线地图。我们知道,地图的展示其实就是一张张地图的图片展示,我们在网页上浏览查找位置的时候,其实都是在发送图片请求。这些图片请求相对于jsp,servlet来说就是所谓的静态资源,当然服务中的静态资源不仅仅只是图片,像页面样式css文件,js脚本文件这些都可以看着是静态资源。tomcat既可以静态资源也可以处理动态资源。但是单节点的tomcat本身处理请求的资源是有限的,如果项目中的tomcat既处理动态请求有要处理大量的静态资源。显然是不合理的,也就是会遇到tomcat的性能瓶颈问题,对于静态资源的处理我们有更好的服务器像Nginx,Apache.他们处理静态资源的能力比Tomcat强很多,那么我们能不能对请求进行分工呢?静态资源的请求由Nginx来处理,像jsp我们交给tomcat来处理。这样也能减轻tomcat的处理压力。

如何实现

对于上面的动静分离想必大家都已经理解了,那么具体nginx是如何实现动静分离的呢?这里简单的搭建个小例子。

这里先是在本地tomcat中启动一个小demo,服务中就是一个简单的jsp页面,页面中包含一张图片。我们再启动Nginx作为反向代理,在nginx的配置文件中,配置代理的tomcat服务ip以及端口,还是静态资源的root路径,具体Nginx配置文件关键配置如下

server {
        listen       80;
        server_name  localhost;
	location / {
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_pass http://localhost:8082;
            # 真实的客户端IP
            proxy_set_header   X-Real-IP        $remote_addr; 
            # 请求头中Host信息
            proxy_set_header   Host             $host; 
            # 代理路由信息,此处取IP有安全隐患
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            # 真实的用户访问协议
            proxy_set_header   X-Forwarded-Proto $scheme;
	}
		
	#静态文件交给nginx处理
	location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|
	zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
	{
		root /static;
		expires 30d;
	}
	#静态文件交给nginx处理
	location ~ .*\.(js|css)?$
	{
		root /static;
		expires 1h;
	}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

页面中的图片是放在了和Nginx同级目录的static文件夹下面,static文件夹在Nginx目录下没有,需创建,和conf文件夹同级,也可以自定义。如果我们直接访问tomcat下面的index页面,输入 http://localhost:8082/tomcattest/由于tomcat服务中并没有页面的中mingren.jpg。所以图片是没有展示的,如下图

Nginx实现动静分离「建议收藏」

 接着我们访问Nginx监听的80端口,http://localhost/tomcattest,图片展示

Nginx实现动静分离「建议收藏」

我们也可以在浏览器中看到,图片中的缓存时间和Nginx中配置的缓存时间也是一致的

Nginx实现动静分离「建议收藏」

总结

上面简单的介绍了如何利用Nginx实现请求的动静分离。以及具体为什么要动静分离。其实实现动静分离是在Nginx反向代理的基础上实现。对于Nginx,我们后面再继续深入学习。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130162.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring spel表达式_substring sql

    spring spel表达式_substring sqlSpEL表达式简介用法1.注解@Value2.XML配置3.Expression表达式语法简介SpringExpressionLanguage(缩写为SpEL)是一种强大的表达式语言。在Spring产品组合中,它是表达式计算的基础。它支持在运行时查询和操作对象图,它可以与基于XML和基于注解的Spring配置还有bean定义一起使用。由于它能够在运行时动态分配值,因此可以为我们节省大量Java代码。依赖:在这里插入代码片用法SpEL有三种用法,一种是在注解@Value中

    2022年9月3日
  • Virtualenv介绍、基本使用及在Pycharm下配置环境[通俗易懂]

    Virtualenv介绍、基本使用及在Pycharm下配置环境[通俗易懂]Virtualenv是一个创建独立Python运行环境的工具,主要解决Python软件开发过程中版本和依赖性问题。本文对Virtualenv做了简单的介绍、如何建立虚拟环境以及如何在Pycharm下配置Virtualenv环境

    2022年8月28日
  • callee和caller的区别_caller中文

    callee和caller的区别_caller中文Javascriptarguments.callee和caller的区别一、callee  在学习callee之前,需要先学习arguments。  arguments:含义:该对象代表正在执行的函数和调用它的函数的参数。 语法: 1 [function.]arguments[n]   参数:function:当前正在执行的Func…

    2022年10月30日
  • matlab 计算变异系数,变异系数法求权重matlab 代码[通俗易懂]

    matlab 计算变异系数,变异系数法求权重matlab 代码[通俗易懂]利用matlab编程,很容易根据变异系数法,求得多指标综合评价模型的权重。代码如果有不懂的地方,可以联系我。变异系数法求权重matlab代码clear;clc;[data1,header1]=xlsread(‘statistic1.xlsx’,’ECO’);%必须将statistic.xlsx至于默认文件下,或者给出完整路径[data2,header2]=xlsread(‘stati…

    2022年6月11日
  • Java Set集合的详解

    Java Set集合的详解一,SetSet:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性  引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashCode会返回每个对象特有的序号(j

    2022年6月13日
  • Apap图像配准算法[通俗易懂]

    Apap图像配准算法[通俗易懂]Apap图像配准算法

    2022年4月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号