精华内容
下载资源
问答
  • 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,...nginx动静分离的好处api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即...

    083c7d64d8a3b55caef33a8fc31d5c8e.png

    动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。

    3d9eb6dd7720a094cb7ac67cf04b7be2.png

    动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。

    nginx动静分离的好处

    api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。

    前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间

    减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。

    更多Nginx相关知识,请访问Nginx使用教程栏目!

    展开全文
  • Nginx动静分离

    2021-05-26 20:06:53
    Nginx动静分离一、动静分离概述1.动静分离:2.原理:二、配置Nginx的动静分离1.环境配置2.实验目的 一、动静分离概述 1.动静分离: 通过中间件也就是代理服务器把静态请求和动态请求进行分离,分离资源可以减少不必...

    一、动静分离概述

    1.动静分离:

    通过中间件也就是代理服务器把静态请求和动态请求进行分离,分离资源可以减少不必要的请求消耗,减少请求延迟
    静态页面:.html .htm
    Nginx:对静态页面术有专攻,动态不支持
    动态页面:.jsp .php

    2.原理:

    中间件也就Nginx代理会把动态请求转发给其他服务器,自己只处理静态请求,当然也可以把静态请求转发给后端的可以解析静态请求的web服务器 (因为Nginx默认只能处理静态页面)
    在这里插入图片描述

    二、配置Nginx的动静分离

    1.环境配置

    系统ip主机名软件包扮演角色
    Centos7.4192.168.100.10proxyNginx1.12.0代理服务器
    Centos7.4192.168.100.11nginxNginx1.12.0静态web
    Centos7.4192.168.100.12nginx-02Nginx1.12.0动态web

    2.实验目的

    客户端通过代理服务器可以访问动态页面和静态页面
    (1)先做基础配置(略)

    [root@7-10 ~]# cd /usr/local/nginx/conf/
    [root@7-10 conf]# cp nginx.conf nginx.conf.bak
    [root@7-10 conf]# sed -i '/#/d' nginx.conf
    [root@7-10 conf]# sed -i '/^$/d' nginx.conf
    [root@7-10 ~]# vim /usr/local/nginx/conf/nginx.conf
    worker_processes  1;
     events {
         worker_connections  1024;
     }
     http {
         include       mime.types;
         default_type  application/octet-stream;
         sendfile        on;
         keepalive_timeout  65;
         upstream static {
         server 192.168.100.11:80 weight=5;
         }
         upstream java {
         server 192.168.100.12:80 weight=5;
         }
         server {
             listen       80;
             server_name  localhost;
             location / {
             root html;
             index index.html;
             proxy_pass http://static;
             }
             location ~ .*\.(jsp|gif|png|css)$ {
             proxy_pass http://java;
             }
         }
     }
    [root@7-10 ~]# nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@7-10 ~]#  nginx -s reload
    

    动态web和静态web的配置

    在192.168.100.11配置

    worker_processes  1;
     events {
         worker_connections  1024;
     }
     http {
         include       mime.types;
         default_type  application/octet-stream;
         sendfile        on;
         keepalive_timeout  65;
         server {
             listen       80;
             server_name  localhost;
             location / {
             root html;
             index index.html;
         }
       }
    }
    [root@7-11 ~]# systemctl restart nginx
    [root@7-11 ~]# netstat -anpt | grep nginx
    [root@7-11 ~]# echo "static" > /usr/local/nginx/html/index.html
    

    在192.168.100.12配置

    [root@7-12 ~]# cd /usr/local/nginx/conf/
    [root@7-12 conf]# vim /usr/local/nginx/conf/nginx.conf
     worker_processes  1;
     events {
         worker_connections  1024;
     }
     http {
         include       mime.types;
         default_type  application/octet-stream;
         sendfile        on;
         keepalive_timeout  65;
         server {
             listen       80;
             server_name  localhost;
             location / {
             root html;
             index index.jsp;
         }
      }
    }
    [root@7-12 conf]# cd /usr/local/nginx/
    [root@7-12 nginx]# cd html/
    [root@7-12 html]# mv index.html index.jsp
    [root@7-12 html]# echo "java" > index.jsp 
    [root@7-12 html]# systemctl restart nginx
    [root@7-12 html]# netstat -anpt | grep nginx
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      45583/nginx: master 
    

    使用浏览器访问进行测试
    在这里插入图片描述
    在这里插入图片描述
    分离成功

    展开全文
  • nginx动静分离

    2021-04-13 09:06:10
    七、nginx动静分离 1. 什么是动静分离 动静分离,通过中间件将动态请求和静态请求进行分离。减少不必要的请求消耗,同时能减少请求的延时。 动静分离只有好处: 动静分离后,即使动态服务不可用,但静态资源不会受到...

    七、nginx动静分离

    1. 什么是动静分离

    动静分离,通过中间件将动态请求和静态请求进行分离。减少不必要的请求消耗,同时能减少请求的延时。
    动静分离只有好处: 动静分离后,即使动态服务不可用,但静态资源不会受到影响。

    在这里插入图片描述

    一般来说,将静态资源部署在nginx上,当一个请求来的时候,如果是静态资源的请求,就直接到nginx配置的静态资源目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离。

    2. 页面中添加静态资源的使用

    在每一个read.jsp页面中添加一段代码:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <h1>首页:tomcat8080</h1>
        <h2>SessionID:<%=session.getId()%></h2>
        <h2>图片</h2>
        <img src="images/tu.png"/>
    </body>
    </html>
    

    3. 静态资源放在nginx中

    在nginx/html的目录下创建/demo/images目录,并且将图片放置到该目录下

    在这里插入图片描述

    4. 修改nginx.conf配置文件

    在nginx/conf目录下找到nginx.conf文件

    修改后的具体内容如下:

    # 静态请求直接读取
    location ~ .*\.(html|gif|jpg|jpeg|png|bmp|swf|css|js)$ {
        root    html;  
        expires      30d;
    }
    

    在这里插入图片描述

    因为nginx的配置文件发生了变化,需要重新加载gninx的配置文件。

    nginx -s reload
    

    5. 访问验证

    http://localhost/demo

    在这里插入图片描述

    展开全文
  • Nginx动静分离详解

    2021-05-25 11:34:56
    Nginx动静分离基本概述 动静分离,通过中间件将动态请求和静态请求进行分离 那为什么要通过中间件将动态请求和静态请求进行分离?减少不必要的请求消耗,同时能减少请求的延时。 Nginx动静分离场景实践 实验架构 ...

    Nginx动静分离基本概述

    动静分离,通过中间件将动态请求和静态请求进行分离
    那为什么要通过中间件将动态请求和静态请求进行分离?减少不必要的请求消耗,同时能减少请求的延时。

    在这里插入图片描述

    Nginx动静分离场景实践

    实验架构

    在这里插入图片描述

    实验环境

    主机			 服务 					服务							地址
    lb01		负载均衡				Nginx Proxy					192.168.15.5			
    Web01		静态资源				Nginx Static				192.168.15.7
    Web02		动态资源				Tomcat Server				192.168.15.8
    

    静态资源配置

    - web01服务器
    1. 修改nginx配置文件
    vim /etc/nginx/conf.d/ds_oldboy.conf
    server {
            listen 80;
            server_name ds.oldboy.com;
            root /soft/code;
            index index.html;
    
            location ~* .*\.(png|jpg|gif)$ {			# 不区分大小写匹配~*,匹配优先级高于/
                    root /soft/code/images;
            }
    }
    
    2. 创建nginx配置文件指定存放数据的目录
    mkdir -p /soft/code/images
    
    3. 创建nginx静态资源数据
    echo "ceshi" > /soft/code/index.html
    cd /soft/code/images
    rz -E test.jpg
    
    4. 重启nginx服务
    systemctl restart nginx
    
    - 测试
    在本机添加域名解析
    C:\Windows\System32\drivers\etc
    在hosts文件添加域名解析
    192.168.15.7			ds.oldboy.com	
    
    我们打开浏览器输入ds.oldboy.com,可以访问到ceshi。
    输入ds.oldboy.com\test.jpg,可以访问到我们存放在/soft/code/images路径下的图片。
    

    动态资源配置

    - web02服务器
    1. 下载并安装tomcat软件
    yum -y install tomcat
    
    2. 创建tomcat软件指定的目录
    mkdir /usr/share/tomcat/webapps/ROOT
    
    3. 利用tomcat软件,创建nginx动态文件
    vim /usr/share/tomcat/webapps/ROOT/java_test.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <HTML>
        <HEAD>
            <TITLE>JSP Test Page</TITLE>
        </HEAD>
        <BODY>
          <%
            Random rand = new Random();
            out.println("<h1>Random number:</h1>");
            out.println(rand.nextInt(99)+100);
          %>
        </BODY>
    </HTML>
    
    4. 重启tomcat服务
    systemctl restart tomcat
    
    5. 查看tomcat默认监听的端口号
    netstat -lntp
    # tcp6       0      0 :::8080                 :::*                    LISTEN      2792/java  
    
    - 测试
    我们打开浏览器,输入192.168.15.8:8080/java_test.jsp,可以正常访问到Random number:153(随机数)

    负载均衡配置

    - lb01服务器
    1. 修改nginx配置文件
    vim /etc/nginx/conf.d/proxy_ds.conf
    upstream static {
            server 172.16.1.7:80;
    }
    
    upstream java {
            server 172.16.1.8:8080;
    }
    
    server {
            listen 80;
            server_name ds.oldboy.com;
    
            location ~* .*\.(png|gif|jpg)$ {
                    proxy_pass http://static;
                    proxy_set_header Host $http_host;
            }
    
            location ~ \.jsp {
                    proxy_pass http://java;
            }
    }
    
    2. 重启nginx服务
    nginx -t
    systemctl restart nginx
    
    - 测试
    在本机添加域名解析
    C:\Windows\System32\drivers\etc
    在hosts文件添加域名解析(注释掉本机其他ip与域名之间的对应关系)
    192.168.15.5			ds.oldboy.com
    
    - 我们打开浏览器输入ds.oldboy.com/test.jpg,可以访问到我们在web01主机上传的图片,
    - 输入ds.oldboy.com/java_test.jsp,可以访问到我们在web02主机的动态资源  Random number:142(随机数)
    

    整合Nginx负载均衡代码

    - lb01服务器
    1. 修改nginx配置文件
    vim /etc/nginx/conf.d/proxy_ds.conf
    upstream static {
            server 172.16.1.7:80;
    }
    
    upstream java {
            server 172.16.1.8:8080;
    }
    
    server {
            listen 80;
            server_name ds.oldboy.com;
            root /soft/code;
            index index.html;
    
            location ~* .*\.(png|gif|jpg)$ {
                    proxy_pass http://static;
                    proxy_set_header Host $http_host;
                    # 代理服务器匹配请求静态资源的时候,默认加上Host头信息(域名)
            }
    
            location ~ \.jsp {
                    proxy_pass http://java;
            }
    }
    
    2. 创建nginx文件指定存放静态文件的目录
    mkdir -p /soft/code
    
    3. 创建nginx静态数据资源
    vim /soft/code/index.html
    <html lang="en">
    <head>
            <meta charset="UTF-8" />
            <title>测试动静分离</title>
            <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    </head>
    <script type="text/javascript">
    $(document).ready(function(){
            $.ajax({
            type: "GET",
            url: "http://ds.oldboy.com/java_test.jsp",
            success: function(data) {
                    $("#get_data").html(data)
            },
            error: function() {
                    alert("fail!!,请刷新再试");
            }
            });
    });
    </script>
            <body>
                    <h1>测试动静分离</h1>
                    <h1>上面为静态图片,下面为动态页面</h1>
                    <img src="http://ds.oldboy.com/test.jpg">
                    <div id="get_data"></div>
            </body>
    </html>
    
    4. 重启nginx服务
    systemctl restart nginx
    
    - 测试
    我们打开浏览器,输入ds.oldboy.com,可以同时访问到我们在web01主机上传的图片 + web02主机的动态资源Random number:133(随机数)。
    我们在web01主机执行systemctl stop nginx。刷新浏览器,不影响web02主机的动态资源访问。
    

    Nginx资源分离场景实践

    Nginx通过负载均衡实现手机与PC调度至不同的后端节点应用案例

    实验环境

    - 根据iphone、安卓、pc跳转不同的页面环境规划
    主机				 服务 			   		外网ip				内网ip			端口
    lb01			负载均衡				192.168.15.5		172.16.1.5			80
    Web01			提供Android页面							172.16.1.7			9090
    Web01			提供iphone页面							172.16.1.7			9091
    web01			提供pc页面								172.16.1.7			9092
    

    配置后端web01节点的Nginx配置

    1. 修改Nginx配置文件
    vim /etc/nginx/conf.d/sj.conf
    server {
            listen 9090;
            location / {
                    root /code/android;
                    index index.html;
            }
    }
    
    server {
            listen 9091;
            location / {
                    root /code/iphone;
                    index index.html;
            }
    }
    
    server {
            listen 9092;
            location / {
                    root /code/pc;
                    index index.html;
            }
    }
    
    
    2. 创建Nginx文件指定目录下的静态资源文件
    mkdir /code/{android,pc,iphone}
    echo "android" > /code/android/index.html
    echo "pc" > /code/pc/index.html
    echo "iphone" > /code/iphone/index.html
    
    3. 启动Nginx服务
    nginx -t
    systemctl restart nginx
    

    配置lb01节点的负载均衡

    1. 修改Nginx配置文件
    vim /etc/nginx/conf.d/proxy_sj.conf
    upstream android {
            server 172.16.1.7:9090;
    }
    
    upstream iphone {
            server 172.16.1.7:9091;
    }
    
    upstream pc {
            server 172.16.1.7:9092;
    }
    
    server {
            listen 80;
            server_name sj.nana.com;
    
            location / {
            	# 内置变量:$http_user_agent 来区分(电脑pc、手机 mobile、平板 pad)端的内容访问...
                    if ($http_user_agent ~* "android") {
                            proxy_pass http://android;
                    }
    
                    if ($http_user_agent ~* "iphone") {
                            proxy_pass http://iphone;
                    }
    
                    if ($http_user_agent ~* "MSIE") {
                    # 如果访问的浏览器是IE浏览器,返回403
                            return 403;
                    }
    
                    proxy_pass http://pc;
                    # 默认跳转至pc站点
            }
    }
    
    2. 重启Nginx服务
    nginx -t
    systemctl restart nginx
    
    
    - 测试
    在本机添加域名解析
    C:\Windows\System32\drivers\etc
    在hosts文件添加域名解析(注释掉本机其他ip与域名之间的对应关系)
    192.168.15.5		sj.nana.com
    

    测试

    • 打开百度的官网,输入F12。可以利用百度开发工具去访问我们的域名sj.nana.com,如下图所示:
      在这里插入图片描述

    京东跳转测试

    我们基于上一个手机与PC调度测试,利用京东的站点跳转做一个测试

    - lb01服务器
    1. 修改Nginx配置文件
    vim /etc/nginx/conf.d/proxy_sj.conf 
    upstream android {
            server 172.16.1.7:9090;
    }
    
    upstream iphone {
            server 172.16.1.7:9091;
    }
    
    upstream pc {
            server 172.16.1.7:9092;
    }
    
    server {
            listen 80;
            server_name sj.nana.com;
    
            location / {
                    if ($http_user_agent ~* "android|iphone") {
                            rewrite ^/$ https://www.jd.com redirect;
                            # 京东做的站点跳转
                    }
            }
    }
    
    #       location / {
    #               if ($http_user_agent ~* "android") {
    #                       proxy_pass http://android;
    #               }
    
    #               if ($http_user_agent ~* "iphone") {
    #                        proxy_pass http://iphone;
    #                }
    
    #                if ($http_user_agent ~* "MSIE") {
    #                       return 403;
    #               }
    #}
    
    2. 重启Nginx服务
    nginx -t
    systemctl restart nginx
    

    测试

    • 打开百度的官网,输入F12。可以利用百度开发工具去访问我们的域名sj.nana.com,如下图所示
      在这里插入图片描述
    展开全文
  • 文章目录前言:一、Nginx+Apache动静分离原理1.1 Nginx动静分离概述1.3 Nginx实现动静分离配置1.3.1 动静分离需求1.3.2 配置重点二、Nginx+Apache动静分离(实验)2.1 搭建LAMP架构2.1.1 Apache服务安装与配置2.1.2 ...
  • Nginx 动静分离

    2019-12-24 14:57:13
    Nginx 动静分离 一:概述 Nginx 的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静态分离技术。 针对 PHP 的动静分离: 静态页面交给Nginx 处理 动态页面交给PHP-FPM模块或 Apache处理 ...
  • 文章目录Nginx动静分离反向代理的原理Nginx动静分离实验实验需求:推荐步骤: Nginx动静分离 Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术 针对PHP的动静分离 静态页面交给 ...
  • Nginx动静分离基本概述 动静分离,通过中间将动静分离和静态请求进行分离; 通过中间件将动态请求和静态请求分离,可以建上不必要的请求消耗,同时能减少请求的延时。 通过中间件将动态请求和静态请求分离,逻辑图...
  • Nginx动静分离实现

    2016-10-27 16:31:04
    Nginx动静分离实现: Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache、Tomcat及IIS等来实现,这里就以Nginx作为代理服务器的同时,也...
  • 2、Nginx 动静分离 为加快网站解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。 在动静分离的tomcat的时候比较明显,因为tomcat解析静态很慢,简单来说,是使用...
  • nginx动静分离及负载均衡 1.为什么要实现动静分离 1.1 nginx的处理静态资源能力超强 主要是nginx处理静态页面的效率远高于tomcat的处理能力,如果tomcat的请求量为1000次,则nginx的请求量为6000次,tomcat每秒的...
  • 1.nginx动静分离 ????1.1) 什么是动静分离 ????1.2) 动静分离实现原理 ????1.3) Nginx+Tomcat模拟动静分离效果 ????1.4) 集群环境动静分离效果模拟 2.nginx+python? ????2.1) wsgi、uwsgi协议 ????2.2) uwsgi为什么...
  • nginx 动静分离详解

    2020-10-12 21:03:21
    1.配置nginx反向代理upstream; vim /etc/nginx/ngnx.conf upstream static { server 10.0.105.196:80 weight=1 ; } upstream php { server 10.0.105.200:80 weight=1 ; } server { listen 80; server_name ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,743
精华内容 1,897
关键字:

nginx动静分离原理