为什么要动静分离呢?

拿Nginx来说,Nginx是Web服务器,仅仅只能处理静态资源(例如js,img,css等等),而Tomcat属于应用服务器既能处理静态资源又能处理动态资源(例如jsp,freemarker,volocity等等)。但是Nginx处理静态资源的效率要高于Tomcat,而Tomcat处理静态资源的效率要低于Nginx很多,术业有专攻是也。由此,我相信大家明白了为什么要动静分离了。

如果还有不明白的,简单的说,web开发的本质就是HTTP请求,将成千上万的请求归类进行分发,谁谁处理这个,谁谁处理那个,取其优势,应用之。这样,毋庸置疑,效率肯定会上去的。

另外说下常用的应用服务器和web服务器?

常用的web服务器:Nginx、Apache等等。

常用的应用服务器:Tomcat、Jboss、Resin、WebLogic等等。

其实Apache也可以做动静分离,只不过我认为Nginx更简单。

关于Nginx的安装可以参考菜鸟教程:http://www.runoob.com/linux/nginx-install-setup.html

关于Nginx的学习和各个模块的含义可以参考这个网址:http://www.nginx.cn/doc/

关于负载均衡和集群均可以参考我的这两篇文章:

nginx反向代理和tomcat集群(适用于ubutnu16.04及其centos7)

nginx做负载均衡和tomcat简单集群

1.动静分离架构图

2.Nginx配置

主要修改nginx.conf配置文件

 upstream  yctech{
server 192.168.126.128:8080;
} server {
listen 80;
server_name yctech; #charset koi8-r; #access_log logs/host.access.log main;
root /test;
location / {
proxy_pass http://yctech;
root html;
index index.html index.htm;
} location ~ ^/yctech1/(.*){
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://yctech; #转向tomcat处理 } location ~ ^/yctech2/(.*){
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://yctech; #转向tomcat处理 } location ~ ^/yctech3/(.*){
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://yctech; #转向tomcat处理 } location ~ ^/yctech4/(.*){
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://yctech; #转向tomcat处理 } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
expires 30d;
}

root 对应的html是nginx的一个目录,这个目录下通常是官网的主页。

像root /test;

是因为html下有test目录,而test目录主要放置静态资源,同时也是处理静态资源。

3.编写index.jsp页面测试

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<img src="logo_small.png" width="500px" height="500px"/>
</body>
</html>

jsp页面中的logo_small.png其实是放在test目录下的。

4.重启Nginx

./sbin/nginx -s reload 并在浏览器上输入对应的地址,即可看到对应的效果。

参考思路博文为:https://www.cnblogs.com/xiaoblog/p/4241086.html

Nginx之动静分离的更多相关文章

  1. nginx+tomcat动静分离结构

    本文采用另一种策略对动静分离进行演示,它的大致结构如图 2 所示. 图 2. 本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 ...

  2. Nginx+Apache动静分离

    Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术.动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项 针对PHP的动 ...

  3. 《nginx 五》nginx实现动静分离

    Nginx+Tomcat动静分离 动态页面与静态页面区别 静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源. 动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变. 什么是动 ...

  4. 15 nginx反向代理实现nginx+apache动静分离

    一:nginx反向代理实现nginx+apache动静分离-------------概念--------------------------- nginx反向代理服务器+负载均衡 用nginx做反向代 ...

  5. apache+nginx 实现动静分离

    apache+nginx 实现动静分离 http://blog.csdn.net/xysoul/article/details/50347971

  6. nginx之动静分离(nginx与php不在同一台服务器)

    nginx实现动静分离(nginx与php不在同一个服务器) 使用wordpress-5.0.3-zh_CN.tar.gz做实验 Nginx服务器的配置: [root@app ~]# tar xf w ...

  7. 使用nginx实现动静分离的负载均衡集群

    一.概述: LB负载均衡集群分两类: LVS (四层)和 nginx或haproxy (七层) 客户端通过访问分发器的VIP来访问网站 |现在应用更复杂,比如现在网站页面有: .php .html . ...

  8. Nginx网络架构实战学习笔记(三):nginx gzip压缩提升网站速度、expires缓存提升网站负载、反向代理实现nginx+apache动静分离、nginx实现负载均衡

    文章目录 nginx gzip压缩提升网站速度 expires缓存提升网站负载 反向代理实现nginx+apache动静分离 nginx实现负载均衡 nginx gzip压缩提升网站速度 网页内容的压 ...

  9. Nginx的动静分离

    Nginx的动静分离 在之前我们的负载均衡中,我们再jsp中设置了一个背景,这是一个静态资源,Tomcat处理静态资源的效率并没有Nginx高,我们可以通过动静分离将静态资源和动态资源分割开来,Tom ...

  10. nginx tomcat 动静分离

    所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件</span>,从而达到动静页面 ...

随机推荐

  1. Java自学-初识

    1.Java介绍 Java是一种开发语言,人和人说话用嘴说,人和计算机说话就靠开发语言.Java编写的程序可以让计算机执行一些列命令,达到人们想要的目的.比如说想要统计一年消费情况,如果人工统计,就要 ...

  2. python模块之numpy与pandas

    一.numpy numpy是python数据分析和机器学习的基础模块之一.它有两个作用:1.区别于list列表,提供了数组操作.数组运算.以及统计分布和简单的数学模型:2.计算速度快[甚至要由于pyt ...

  3. Map 模板

    #include<stdio.h> #include<iostream> #include<map> using namespace std; typedef pa ...

  4. frameset 在 Google Chrome 中无法隐藏左边栏解决方法!

    使用Frameset 框架,发现在IE下, <frameset name="mainDefine" cols="200,10,*" frameborder ...

  5. mybatis三种传值方式

    第一种:按序列传参(dao层的函数方法)[sql] Public User selectUser(String name,String area); 对应的Mapper.xml [sql] <s ...

  6. android热加载随记

    在我们日常的开发过程中,程序难免会出现BUG,一般有集中处理方式,发布新版本APP让用户来升级,或者打补丁来修复bug 前者本文在这里不错讨论,打补丁升级又分为两种一种是需要重启应用,一种是不需要.不 ...

  7. Maximum Subarray 连续子数组最大和

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  8. java中字节流与字符流以及字节流多余字节问题

    1.字节流 字节流byte为单位对文件的数据进行写入与读取操作.字节的方式在复制音频图片文件时比较适用,但在对于普通文件的读写上有两大缺陷: 第一,字节流在读取中文字符时,若设定的字节数组长度刚好末尾 ...

  9. js只对等号左边的进行变量提升

    ### 只对等号左边的进行变量提升 > =:赋值,左边是变量,右边都应该是值 ```javascript //之前 i%2 === 0?item.className = 'c1':item.cl ...

  10. Androidpdf

    https://www.jb51.net/article/110238.htm https://blog.csdn.net/u010046908/article/details/53927157 &l ...