云计算运维 · 第二阶段 · 动静分离_Rewrite

学习b记 · 第二阶段

七、动静分离、Rewrite

①动静分离

Nginx动静分离基本概述:
动静分离,通过中间件将动静分离和静态请求进行分离;
通过中间件将动态请求和静态请求分离,可以减少不必要的请求消耗,同时能减少请求的延时。
通过中间件将动态请求和静态请求分离,逻辑图如下:
动态请求需要通过三层逻辑才能返回结果,如果再加上静态资源就会很消耗资源,将静态资源独立出来就能减少消耗

在这里插入图片描述

下面做一个小例子,通过负载均衡单独将两种请求分开相应

系统	作用	服务	地址
Centos7.5	负载均衡	nginx proxy		192.168.17.232
Centos7.5	静态资源	nginx static	192.168.17.202
Centos7.5	动态资源	tomcat server	192.168.17.204
安装前面的文章有,这里直接粘配置文件了

#web01
1、cat jt.conf 
server {
        listen 80;
        server_name pic.qxl.com;
        root /code;
        index index.html;

        location ~* .*\.(jpg|png|gif)$ {
                root /code/images;
        }
}
#弄一个html
2、mkdir /code
   [root@web01 conf.d]# echo "lzy_test_web01" > /code/index.html
#创建图片目录
3[root@web01 conf.d]# mkdir /code/images/
#上传一个图片
4cd /code/images/ 
    rz test.jpg
#重启验证
5、systemctl restart nginx
#浏览器直接输出
http://pic.qxl.com/  http://pic.qxl.com/test.jpg



#web02 这个配置动态
#安服务
1、yum install -y tomcat
#创建目录
2、mkdir /usr/share/tomcat/webapps/ROOT
#建一个jsp网页
3、vim /usr/share/tomcat/webapps/ROOT/java_test.jsp
   <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
    <HEAD>
        <TITLE>JSP Page</TITLE>
    </HEAD>
    <BODY>
        <%
            Random rand = new Random();
            out.println("<h1>oldboy随机数:<h1>");
            out.println(rand.nextInt(99)+100);
        %>
    </BODY>
</HTML>
#重启服务测试
4、systemctl restart tocmat 
#tomcat的默认端口是8080
http://10.0.0.8:8080/java_test.jsp



#加一个负载均衡,可以同时访问web01 web02
1、cd /etc/nginx.conf.d
   vim proxy_ds.conf 
   upstream static {
        server 172.16.1.202:80;
    }

    upstream java {
            server 172.16.1.204:8080;
    }

    server {
            listen 80;
            server_name pic.qxl.com;
            
            location / {
            root /code;
            index index.html;
            }
            
            location ~* \.(jpg|png|gif)$ {
                    proxy_pass http://static;
                    proxy_set_header Host $http_host;
            }

            location ~ \.jsp {
                    proxy_pass http://java;
                    proxy_set_header Host $http_host;
            }
    }
#这里把那两个web整合到一个页面上
2、mkdir -p /code
   vim /code/index.html
   <html lang="en">
    <head>
            <meta charset="UTF-8" />
            <title>测试ajax和跨域访问</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://pic.qxl.com/java_test.jsp",
            success: function(data){
                    $("#get_data").html(data)
            },
            error: function() {
                    alert("失败了");
            }
            });
    });
    </script>
            <body>
                    <h1>测试动静分离</h1>
                    <img src="http://pic.qxl.com/cjk.gif">
                    <div id="get_data"></div>
            </body>
    </html>
#测试 windows做一下hosts解析直接访问
3、pic.qxl.com

②Rewrite

1、什么是rewrite
	Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。
2、Rewrite使用场景
    地址跳转,用户访问www.qxl.com这个URL时,将其定向至一个新的域名mobile.qxl.com
    协议跳转,用户通过http协议请求网站时,将其重新跳转至htt ps协议方式
    伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时减少动态URL地址对外暴露过多的参数,提升更高的安全性。
    搜索引擎,SEO优化依赖于url路径,好记的url便于支持搜索引擎录入
3、Rewrite标记Flag
    rewrite指令根据表达式来重定向URL,或者修改字符串,可以应用于server,location,if环境下,每行rewrite指令最后跟一个flag标记,支持的flag标记有如下表格所示:

    flag	作用
    last	本条规则匹配完成后,停止匹配,不再匹配后面的规则
    break	本条规则匹配完成后,停止匹配,不再匹配后面的规则
    redirect	返回302临时重定向,地址栏会显示跳转后的地址
    permanent	返回301永久重定向,地址栏会显示跳转后的地址
4、last与break区别对比示例
    [root@web01 conf.d]# cat nginx.conf        
    server {
            listen 80;
            server_name test.qxl.com;
            root /code/test/;

            location / {
            rewrite /1.html /2.html;
            rewrite /2.html /3.html; 
            }

            location /2.html {
            rewrite /2.html /a.html;
            }

            location /3.html {
            rewrite /3.html /b.html;
            }
        }
5、redirect与permanent区别对比示例
    [root@web01 conf.d]# cat rewrite.conf 
    server {
            listen 80;
            server_name rewrite.qxl.com;
            root /code;

            location /test {
                    rewrite ^(.*)$  http://www.baidu.com redirect;
                    #rewrite ^(.*)$  http://www.baidu.com permanent;
                    #return 301 http://www.baidu.com;
                    #return 302 http://www.baidu.com;
            }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值