zoukankan      html  css  js  c++  java
  • nginx 08-Nginx的rewrite规则

    nginx的rewrite作用

    • 可通过rewrite规则实现url重写以及重定向
    • 使用场景如下:
      1. URL访问跳转,支持开发设计
      2. 页面跳转、兼容性支持、展示效果等
      3. SEO优化
      4. 维护:后台维护、流量转发等
      5. 安全
    • 配置语法
    rewrite regex replacement [flag];
    (server、location、if)
    
    案例:
    rewrite ^(.*)$ /pages/maintain.html break;
    

    nginx之正则表达式

    .	    --匹配除换行符以外的任意字符
    ?	    --重复0次或1次
    +	    --重复1次或更多次
    *	    --最少链接数,那个机器连接数少就分发
    d	    --匹配数字
    ^	    --匹配字符串的开始
    $	    --匹配字符串的介绍
    {n}	    --重复n次
    {n,}	--重复n次或更多次
    [c]	    --匹配单个字符c
    [a-z]	--匹配a-z小写字母的任意一个
    	    --转义字符
            rewrite index.php$ /pages/maintain.html break;
    ( )	    --用于匹配括号之间的内容,通过$1、$2调用
            if ($http_user_agent ~ MSIE) {
                rewrite ^(.*)$ /msie/$1 break;
            }
    

    nginx之flag描述

    last		--停止rewrite检测,重新发起新的请求
    break		--停止rewrite检测,根据本地路径去查找静态页面
    redirect	--返回302临时重定向,地址栏会显示跳转后的地址
    permanent	--返回301永久重定向,地址栏会显示跳转后的地址
    

    last与break的区别案例

    server {
        listen 80 default_server;
        server_name location;
    
        access_log  /var/log/nginx/log/host.access.log  main;
         
        root /opt/app/code; 
        location ~ ^/break {
            rewrite ^/break /test/ break;
        } 
     
        location ~ ^/last {
             rewrite ^/last /test/ last;
        }    
     
        location /test/ {
           default_type application/json;
           return 200 '{"status":"success"}';
        }
    }
    

    redirect与permanent的区别案例

    server {
        listen 80 default_server;
        server_name location;
    
        access_log  /var/log/nginx/log/host.access.log  main;
         
        root /opt/app/code; 
        location ~ ^/break {
            rewrite ^/break /test/ break;
        } 
     
        location ~ ^/last {
             rewrite ^/last /test/ last;
             #rewrite ^/last /test/ redirect;
        }    
    
        location ~ ^/baidu {
             rewrite ^/baidu http://www.baidu.com/ permanent;
             #rewrite ^/baidu http://www.baidu.com/ redirect;
        }    
     
        location /test/ {
           default_type application/json;
           return 200 '{"status":"success"}';
        }
    }
    

    正则匹配规矩案例

    server {
        listen 80;
        server_name location;
        location / {
            rewrite ^/course-(d+)-(d+)-(d+).html$ /course/$1/$2/course_$3.html break;
            if ($http_user_agent ~* Chrome) {
                rewrite ^/nginx http://192.168.10.10/class/121.html redirect;
            } 
    
            if (!-f $request_filename) {
                rewrite ^/(.*)$ http://www.baidu.com/$1 redirect;
            }
            index  index.html index.htm;
        }
    }
    

    rewrite规则优先级

    • 执行server块的rewrite指令
    • 执行location匹配
    • 执行选定的location中的rewrite
  • 相关阅读:
    syslog(),closelog()与openlog()--日志操作函数 (1)
    C语言之strrchr函数
    HTTP 报文
    Apache Hive 建表操作的简单描述
    Apache Hive 简介及安装
    Hadoop之MapReduce(二)序列化,排序及分区
    Hadoop之MapReduce(一)简介及简单案例
    Hadoop之HDFS(三)HDFS的JAVA API操作
    Hadoop之HDFS(二)HDFS基本原理
    Hadoop之HDFS(一)HDFS入门及基本Shell命令操作
  • 原文地址:https://www.cnblogs.com/liangjingfu/p/10677378.html
Copyright © 2011-2022 走看看