zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    错误:you (root) are not allowed to access to (crontab) because of pam configuration.
    linux自定义登录提示信息
    oracle错误IMP-00013: only a DBA ……
    将MyBatis Mapper xml 放到 jar 包外面
    ApplicationContextAware
    Netty ChannelFuture 监听三种方法
    Intellij 查找排除JAR包的依赖关系(Maven Helper)
    Nacos 服务状态监听四种写发
    Docker 常用命令
    Nginx 安装配置
  • 原文地址:https://www.cnblogs.com/QicongLiang/p/10394424.html
Copyright © 2011-2022 走看看