• 欢迎光临~

动静分离、Rewirte、HTTPS

开发技术 开发技术 2022-10-15 次浏览

目录
  • Nginx动静分离技术
    • 部署NFS
    • 静态资源共享
    • 部署代理服务器
  • Rewrite(重点)
    • Rewrite基本概述
    • rewrite语法
    • rewrite标记Flag
      • last和break的区别
      • redirect和permanent的区别
  • HTTPS

Nginx动静分离技术

动静分离、Rewirte、HTTPS

这里的代理服务器其实就是静态资源处理服务器,图示为了区分动静分离所以分开,静态服务器中;
存放的资源主要是源代码文件、图片、属性、样式以及其它所有非动态的资源文件;
动静分离也是为了提高网站的性能,如果静态请求直接使用代理服务器处理,动态请求再流量分配到客户动态资源处理服务器;
下面以上文的BBS项目演示,将BBS图片分离演示静态请求~

  • 部署NFS

    通过部署NFS实现静态文件共享

    1、创建NFS挂载点
    [root@nfs ~]# mkdir /static
    2、配置挂载点
    [root@nfs static]# vim /etc/exports
    /static   172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
    3、启动服务
    [root@nfs static]# systemctl restart nfs rpcbind 
    4、检查是否正常
    [root@nfs static]# showmount -e
    Export list for nfs:
    /static     172.16.1.0/20
    5、授权
    [root@nfs /]# chown -R www.www /static/
    
  • 静态资源共享

    实现图片文件共享挂载

    1、所有客户端创建挂载点
    [root@web01 /]# mkdir -p /opt/static/s
    
    2、所有客户端挂载
    [root@web01 opt]# mount -t nfs 172.16.1.31:/static /opt/static/
    
    3、查看
    [root@web01 opt]# df -h
    172.16.1.31:/static       20G  3.1G   17G  16% /opt/static
    
    4、静态资源共享
    [root@web01 static]# cp -r /opt/bbs/static/* /opt/static/s/
    [root@web01 static]# ll /opt/static/s/
    total 0
    drwxr-xr-x 5 www www  40 Jan  7 15:36 bootstrap
    drwxr-xr-x 2 www www  23 Jan  7 15:36 css
    drwxr-xr-x 2 www www 168 Jan  7 15:36 font
    drwxr-xr-x 4 www www  30 Jan  7 15:36 img
    
  • 部署代理服务器

    1、安装nfs工具包
    [root@lb01 ~]# yum install nfs-utils -y
    2、创建挂载点
    [root@lb01 ~]# mkdir /opt/static/
    3、挂载
    [root@lb01 ~]# mount -t nfs 172.16.1.31:/static /opt/static/
    [root@lb01 ~]# df -h
    172.16.1.31:/static       20G  3.1G   17G  16% /opt/static
    4、修改配置文件
    # 增加location匹配规则,匹配静态资源
    upstream bbs {
        server 172.16.1.7:80 max_fails=3 fail_timeout=3s;
        server 172.16.1.8:80 max_fails=3 fail_timeout=3s;
        server 172.16.1.9:80 max_fails=3 fail_timeout=3s;
    }
    
    server {
        listen 80;
        server_name py.test.com;
        location / {
            proxy_pass http://bbs;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;
            include /etc/nginx/proxy_params;
        }
        location ~ .(jpg|png|gif|js|css|woff|ttf|woff2)$ {
            root /opt/static;
        }
    }
    

    测试

    动静分离、Rewirte、HTTPS

Rewrite(重点)

Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。案例:京东就重定向了URL

  • Rewrite基本概述

    • 地址跳转,用户访问www.linux.com这个URL是,将其定向至一个新的域名www.baidu.com。
    • 协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式。
    • 伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时建上动态URL地址对外暴露过多的参数,提升更高的安全性。
    • 搜索引擎,SEO优化依赖于url路径,好记的url便于搜索引擎录入。(应用:百度热词,广告等)
  • rewrite语法

    # 语法和范围
    Syntax: rewrite regex replacement [flag];
    Default:    —
    Context:    server, location, if
     
    # 名称解释
    rewrite         # 模块命令
    regex           # 请求的链接(支持正则表达式)
    replacement     # 跳转的链接
    [flag];         # 标签
     
     # 格式示例
    location /download/ {
        rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 break;
        rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra  break;
        return  403;
    }
    
  • rewrite标记Flag

    rewrite指令根据表达式来重定向URL,或者修改字符串,可以应用于server,location,if环境下,每行rewrite指令最后跟一个flag标记,支持的flag标记有如下表格所示:

    flag 作用
    last 本条规则匹配完成后,停止匹配,不再匹配后面的规则
    break 本条规则匹配完成后,停止匹配,不再匹配后面的规则
    redirect 返回302临时重定向,地址栏会显示跳转后的地址
    permanent 返回301永久重定向,地址栏会显示跳转后的地址
    • last和break的区别

      • break请求:
        • 请求linux.rewrite.com/break
        • 匹配 location ~ ^/break 会跳转到 linux.rewrite.com/test
        • 请求跳转后,回去查找本地站点目录下的 /test
        • 如果找到了,则返回/code/test/index.html的内容;
        • 如果没找到该目录则报错404,如果找到该目录没找到对应的文件则403
      • last请求:
        • 请求linux.rewrite.com/last
        • 匹配 location ~ ^/last 会跳转到 linux.rewrite.com/test
        • 如果找到了,则返回/code/test/index.html的内容;
        • 如果没有找到,会重新对当前server发起请求,这个时候访问地址就变成 linux.rewrite.com/test
        • 重新请求server会匹配到 location /test/ 直接返回该location的内容
        • 如果也没有location匹配,再返回404;

        示例如下:

        [root@lb01 conf.d]# vim /etc/nginx/conf.d/flag.conf
        server {
            server_name rewrite.test.com;
            listen 80;
            location ~ ^/break {
                rewrite (.*) /test break;
            }
        
            location ~ ^/last {
                rewrite (.*) /test last;  # 
            }
        
            location /test {
                default_type text/html;
                return 200 "test";
            }
        }
        
        动静分离、Rewirte、HTTPS
        动静分离、Rewirte、HTTPS

        last:访问的过程是匹配last没有匹配成功,重新发起请求匹配到test打印返回值test
        break:访问过程是去网站根目录找test,没有找到就不会重新发起请求,所以404

    • redirect和permanent的区别

      • redirect: 每次请求都会询问服务器,如果当服务器不可用时,则会跳转失败。
      • permanent: 第一次请求会询问,浏览器会记录跳转的地址,第二次则不再询问服务器,直接通过浏览器缓存的地址跳转。
        重定向格式
        location /redirect {
            rewrite (.*) http://www.baidu.com redirect;
        }
        location /permanent {
            rewrite (.*) http://www.baidu.com permanent;
        }
        
        
        # 示例
        server {
            server_name rewrite.test.com;
            listen 80;
            location ~ ^/break {
                rewrite (.*) /test break;
            }
        
            location ~ ^/last {
                rewrite (.*) /test last;
            }
        
            location /test {
                default_type text/html;
                return 200 "test";
            }
            location /redirect {
                rewrite (.*) http://www.baidu.com redirect;
            }
            location /permanent {
                rewrite (.*) http://www.baidu.com permanent;
            }
        }
        
        动静分离、Rewirte、HTTPS
        动静分离、Rewirte、HTTPS

        redirect和permanent是重定向,跳转域名,而last和break不会改名访问的域名

HTTPS

动静分离、Rewirte、HTTPS

程序员灯塔
转载请注明原文链接:动静分离、Rewirte、HTTPS
喜欢 (0)
违法和不良信息举报电话:022-22558618 举报邮箱:dljd@tidljd.com