久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      掌握Nginx的location優(yōu)先級(jí)

      前言

      近幾年Nginx在企業(yè)上的應(yīng)用很廣泛,但很多朋友還是不知道Nginx的location優(yōu)先級(jí),如果不能清晰的掌握nginx的location優(yōu)先級(jí),就會(huì)在配置Nginx的時(shí)候引起錯(cuò)誤的跳轉(zhuǎn),錯(cuò)誤的跳轉(zhuǎn)往往就是一次嚴(yán)重的線(xiàn)上事故。因此,掌握Nginx的location優(yōu)先級(jí)非常重要。

      先來(lái)一個(gè)最簡(jiǎn)單的nginx配置

      worker_processes  1;
      events {
      worker_connections  1024;
      }
      http {
      include      mime.types;
      default_type  application/octet-stream;
      sendfile        on;
      keepalive_timeout  65;

      server {
          listen 80;
          location / {
              return 400;
          }
      }
      }

      location /是通配的,也就是所以請(qǐng)求都能匹配,但它的優(yōu)先級(jí)我們暫時(shí)還不知道。請(qǐng)求結(jié)果如下:

      掌握Nginx的location優(yōu)先級(jí)

      多個(gè)通配的優(yōu)先級(jí)測(cè)試,加入location /test

                  location / {
                          return 400;
                  }
                  location /test {
                          return 401;
                  }

      加入location /test,我們故意把位置放到location /以下,來(lái)驗(yàn)證優(yōu)先級(jí)。請(qǐng)求結(jié)果如下,返回401,從結(jié)果可以看出來(lái)/test的優(yōu)先級(jí)高于location /。不過(guò)用戶(hù)的訪(fǎng)問(wèn)要以/test開(kāi)頭,不是以/test開(kāi)頭還是命中到location /:

      掌握Nginx的location優(yōu)先級(jí)

      location正則的優(yōu)先級(jí)測(cè)試,我們加入~ ^/test,使用正則匹配以test開(kāi)頭的

                  location / {
                          return 400;
                  }
                  location /test {
                          return 401;
                  }
                  location ~ ^/test {
                          return 402;
                  }

      加入location ~ ^/test,我們故意再把它放到最后,來(lái)驗(yàn)證優(yōu)先級(jí)。請(qǐng)求結(jié)果如下,返回402,從結(jié)果可以看出來(lái)正則的優(yōu)先級(jí)要大于location /和location /test,也就是正則location大于通配location

      掌握Nginx的location優(yōu)先級(jí)

      多個(gè)正則的優(yōu)先級(jí)測(cè)試,我們使用兩個(gè)正則,主要是來(lái)驗(yàn)證下,是不是正則配置得越多,優(yōu)先級(jí)就越高。如下的配置

                location ~ ^/test {
                          return 402;
                  }

                  location ~ ^/test/aaa {
                          return 403;
                  }

      加入^/test/aaa,我們一樣把它放到最后,請(qǐng)求/test/aaa。結(jié)果返回402,也就是匹配到第一個(gè)正則后,底下的正則不會(huì)再去匹配。由于請(qǐng)求/test/aaa,命中^/test,所以底下的正則就無(wú)效了:

      掌握Nginx的location優(yōu)先級(jí)

      我們加入精準(zhǔn)匹配,也就是nginx的=,我們來(lái)測(cè)試下精準(zhǔn)匹配的優(yōu)先級(jí)

                  location ~ ^/test/aaa {
                          return 403;
                  }

                  location = /test/aaa {
                          return 404;
                  }

      我們故意把= /tmp/aaa放到最后,這個(gè)只能匹配到/test/aaa的請(qǐng)求,得到的結(jié)果如下,返回404。這個(gè)說(shuō)明了,精準(zhǔn)匹配=的優(yōu)先級(jí)是最高的,不管它放到哪里。

      掌握Nginx的location優(yōu)先級(jí)

      問(wèn)題1:為什么我的nginx設(shè)置了全局跳轉(zhuǎn),但怎么不生效?

                  location / {
                          rewrite xxx xxxx;
                  }

                  location ~* ^/test {
                          return 402;
                  }

      如果是以上的跳轉(zhuǎn)配置的話(huà),大家根據(jù)優(yōu)先級(jí)來(lái),可以發(fā)現(xiàn)location /的優(yōu)先級(jí)是最低的,所以全局跳轉(zhuǎn)不生效。因?yàn)楫?dāng)用戶(hù)訪(fǎng)問(wèn)到/test/xx的時(shí)候,命中到其它location了。所以全局跳轉(zhuǎn)的話(huà),保留一個(gè)location /即可。

      問(wèn)題2:為什么我的nginx動(dòng)靜分離配置失敗了?

                  location ~ ^/test {
                          root xxxx;
                  }

                  location ~ .jsp$ {
                          proxy_pass xxxx;
                  }

      如果是以上配置的話(huà),當(dāng)用戶(hù)訪(fǎng)問(wèn)到/test/xxx.jsp的時(shí)候,就命令到location ~ ^/test了。所以動(dòng)靜分離如果都使用正則的話(huà),需要注意location的放置位置。

      總結(jié)如下:

      1 匹配優(yōu)先級(jí)如下

      ① = 精確匹配
      ② ^~ 優(yōu)先匹配常規(guī)字符串,匹配后,不檢查正則
      ③ ~* 正則匹配 示例: ~*.(gif|jpg|jpeg)$
      ④ / documents/ 匹配常規(guī)字符 documents 代表目錄,可以是其他值
      ⑤ / 所有l(wèi)ocation無(wú)法匹配,則顯示該默認(rèn)匹配

      以上可以都有,也可以都沒(méi)有,如果都有,則按照以上優(yōu)先級(jí)匹配。

      2 匹配的時(shí)候如果有正則,如上面③的示例,則網(wǎng)址最后一項(xiàng)是.gif 即可匹配成功,在.gif前面的目錄是不存在的也能匹配。

      /documents 如果要匹配成功,上級(jí)目錄必須是存在的。

      3 正則寫(xiě)法必須有~或~* 否則無(wú)效

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)