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;

  • 相关阅读:
    Java乔晓松oracle的多表查询
    定义一个地址固定的变量
    J2ME的表单元素及其事件
    J2me的异常处理和多线程
    [置顶] eclipse远程部署,静态文件实时同步插件
    newlisp debugger
    启用isqlplus
    ORA27101: shared memory realm does not exist
    windows下安装node.js及less
    em启动/关闭报错解决
  • 原文地址:https://www.cnblogs.com/1016391912pm/p/13191663.html
Copyright © 2011-2022 走看看