• Nginx----rewrite模块


    Nginx----rewrite模块(break、last详解)

    break实例

    我们先创建一台虚拟主机

    server {
        server_name localhost;
        listen  8002;
    
        location /test/ {
          root /usr/local/nginx/html  ;
          index index.html;
          rewrite (.*)/1.html $1/2.html;
          rewrite (.*)/2.html $1/3.html;
      }

    可以看到这个虚拟主机是访问test目录下面的html文件的。

    这里访问1.html文件会把请求转发到2.html文件那里。

    然后请求到2.html那里又会转发到3.html那里。

    server {
        server_name localhost;
        listen  8002;
    
        location /test/ {
          root /usr/local/nginx/html  ;
          index index.html;
          rewrite (.*)/1.html $1/2.html break;
          rewrite (.*)/2.html $1/3.html;
      }

    然后我们在第一条rewrite那里加上一个break

    这样请求就会停在2.html那里了,直接就访问2.html了。

    但是如果这里加的是last呢?

    server {
        server_name localhost;
        listen  8002;
    
        location /test/ {
          root /usr/local/nginx/html  ;
          index index.html;
          rewrite (.*)/1.html $1/2.html last;
          rewrite (.*)/2.html $1/3.html;
      }

    结果是会访问到3.html,这时候的访问逻辑如下。

    首先访问/test/1.html,rewrite成/test/2.html,然后遇到last。

    last会把rewrite后的结果重新发到nginx那里,也就是说,rewrite后的结果,会在配置文件里面从上到下重新匹配一次。

    这时候我们的请求已经变成/test/2.html了,在nginx里面会匹配到/test/这个location,然后这个location里面会匹配到第二条rewrite规则。

    会把/test/2.html改写成/test/3.html,因此最后访问的就是3.html。

  • 相关阅读:
    redis:aof恢复与rdb服务器间迁移
    redis的主从服务器配置
    redis:消息发布与订阅频道
    redis:hash哈希类型的操作
    redis:order set有序集合类型的操作(有序集合)
    redis:set集合类型的操作(无序集合)
    redis:list列表类型的操作
    C#之多线程
    C# 操作FTP
    C# 导出导入TXT文件
  • 原文地址:https://www.cnblogs.com/QicongLiang/p/10394424.html
Copyright © 2020-2023  润新知