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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IE阻止了此网站安装ActiveX控件

    IE阻止了此网站安装ActiveX控件解决方法:工具——Internet选项——安全受信任站点,然后点击站点,把地址(这个你自己确定该站点是不是可信任的)复制进去,然后点添加,再点关闭然后继续点可信任站点,再点下面的自定义级别,在弹出的对话框里面对所有关于activex的选项做如下操作1:如果之前是启用或者提示的,不修改2:如果之前是禁用的,改成启用或提示重新访问此站点,即可。

    2022年5月14日
    87
  • SoftReference

    SoftReference

    2021年12月15日
    43
  • Java服务器热部署的实现原理

    Java服务器热部署的实现原理今天发现早年在大象笔记中写的一篇笔记,之前放在ijavaboy上的,现在它已经访问不了了。前几天又有同事在讨论这个问题。这里拿来分享一下。在web应用开发或者游戏服务器开发的过程中,我们时时刻刻都在使用热部署。热部署的目的很简单,就是为了节省应用开发和发布的时间。比如,我们在使用Tomcat或者Jboss等应用服务器开发应用时,我们经常会开启热部署功能。热部署,简单点来说,就是我们将打

    2022年5月21日
    27
  • adb安装apk_adb常用命令最全解析及应用

    adb安装apk_adb常用命令最全解析及应用启动adbserver命令:adbstart-server停止adbserver命令:adbkill-server查看adb版本命令:adbversion查询已连接设备/模拟器命令:adbdevices安装APK命令格式:adbinstall[-lrtsdg]参数:adbinstall后面可以跟一些可选参数来控制安装APK的行为,可用参数及含义如下:参数含义…

    2022年5月2日
    78
  • 一元线性回归-最小二乘法推导过程

    一元线性回归-最小二乘法推导过程设一元线性回归方程为,数据样本点为,要想使这n个样本点落在一元线性回归方程附近,不妨设误差为,使得没一个样本点落在一元线性回归方程上,因此有恒成立,所以回归直线应满足的条件是:实际值与回归估计值之间的误差平方和最小,即:此时令,原问题就转换成求解二元函数极小值问题,分别对求偏导:令上两式等于零,即最终求出两个数值,一元线性回归方程也就拟合出来了。…

    2022年5月17日
    63
  • 基于python的快速傅里叶变换FFT(二)

    基于python的快速傅里叶变换FFT(二)

    2021年11月21日
    47

发表回复

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

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