zoukankan      html  css  js  c++  java
  • linux---集群架构初探(24)Nginx Rewrite

    Nginx Rewrite使用场景

    1.URL地址跳转,例如用户访问pm.com将其跳转到baidu.com或者当用户通过http的方式访问时,将其跳转至https的方式访问。

    2.URL伪静态,将动态页面显示为静态页面方式的一种技术,减少动态URL地址对外暴露过多的参数,提升更高的安全性。

    3.搜索引擎SEO优化依赖于URL路径,以便支持搜索引擎录入

    4.可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。

    配置语法

    rewrite regex replacement [flag];

    4中flag

    last  停止处理后续rewrite指令集,跳出location作用域,并开始搜索与更改后的URI相匹配的location,URL地址不变

    break  停止处理后续rewrite指令集,不会跳出location作用域,不再进行重新查找,终止匹配,URL地址不变

    redirect  返回302临时重定向,浏览器地址栏会显示跳转后的URL地址,爬虫不会更新自己的URL数据库

    permanent 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫会更新自己的URL数据库

    注:使用last和break时浏览器中的地址不会改变,使用redirect和permanent则会改变

    举例说明:

    location /abc/ {
      rewrite ^/abc/(.*) /whsir/$1 break;
      return 401;
    }
    location /opq/ {
      rewrite ^/opq/(.*) /whsir/$1 last;
      return 402;
    }
    location /whsir/ {
      return 403;
    }
    输入abc后,如果能匹配到whsir的内容,则返回200,否则返回404
    输入opq后,如果能匹配到whsir的内容,则返回403,否则返回404
    last和break只返回一个状态码即成功或失败,redirect和permanent会先返回302或301,在返回成功或失败

    常用的Nginx全局变量:

    例:http://www.pm.com:99/aa/bb/test.php

    $host        www.pm.com

    $server_port     99

    $request_uri       /aa/bb/test.php

    $document_root      /pm_code

    $request_filename  /pm_code/aa/bb/test.php

    案例1:外部跳转

    打开lb01虚拟机,先将之前的自定义配置文件关闭,新建/etc/nginx/conf.d/rewrite.conf

    注:^/意思为以根(这里根目录为/pm_code,对应域名为www.pm.com)开头的url都会重定向到百度。

    修改/etc/nginx/nginx.conf文件

    将错误日志级别修改为notice使其能记录到重定向信息(debug, info, notice, warn, error, crit越靠前记录的信息越多)

    在http模块中添加一行

    rewrite_log on;(打开rewrite日志记录)

    测试

    在浏览器地址栏中输入www.pm.com(在hosts中已配置好),会重定向到百度首页

    案例2:内部跳转

    更改/etc/nginx/conf.d/rewrite.conf内容

    在/pm_code中创建文件2.html(内容222),在浏览器中输入www.pm.com/1.html

    在错误日志中查看记录

    使用return

    在上述方法中,浏览器地址栏中显示的是1.html,而网页内容是2.html的内容,如果想要地址栏中也显示2.html,将location中的内容更改为  return 302 /2.html;  或者  rewrite .* /2.html redirect;

    使用正则

    例:将www.pm.com/2020/*  重定向到  www.pm.com/2019/*

    括号代表一个整体,$1代表前面第一个括号内的内容

    将http跳转到https

     注:nginx 1.14版本后可以不用写ssl on了,listen那里写成listen 443 ssl;

  • 相关阅读:
    Code Forces 650 C Table Compression(并查集)
    Code Forces 645B Mischievous Mess Makers
    POJ 3735 Training little cats(矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂)
    PAT 1026 Table Tennis (30)
    ZOJ 3609 Modular Inverse
    Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/13191663.html
Copyright © 2011-2022 走看看