久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放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和Rewrite深入剖析

      Nginx Location

      Nginx由內(nèi)核和模塊組成,其中內(nèi)核的設(shè)計(jì)非常微小和簡(jiǎn)潔,完成的工作也非常簡(jiǎn)單,僅僅通過查找配置文件將客戶端的請(qǐng)求映射到一個(gè)location block,而location是Nginx配置中的一個(gè)指令,用于訪問的URL匹配,而在這個(gè)location中所配置的每個(gè)指令將會(huì)啟動(dòng)不同的模塊去完成相應(yīng)的工作。

      • location功能是由ngx_http_index_module模塊提供的。
      • location常放在server上下文。
      • location匹配與location的放置順序無關(guān),而是與location匹配規(guī)則的優(yōu)先級(jí)有關(guān)。

      常見的location匹配的URL方式如下:

      符號(hào) 解釋
      = 字面精確匹配,精確到文件
      ^~ URL的前綴匹配,不支持正則
      ~ 正則匹配檢查,區(qū)分大小寫
      ~* 正則匹配檢查,不區(qū)分大小寫
      / 不帶任何前綴

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

      (location =) > (location 完整路徑)> (location ^~) > (location ~) > (location ~*) > ( location部分起始路徑) > (location / )

      Nginx Location規(guī)則案例:

      1.只會(huì)匹配/,優(yōu)先級(jí)比location / 低,= file 匹配到file的優(yōu)先級(jí)最高。

      location =/ {  [ configuration L1  ]  }

      2.直接匹配到到file,優(yōu)先級(jí)最高。

      location =/index.html {  [ configuration L2  ]  }

      3.可以匹配任何請(qǐng)求,但是因?yàn)閺?/ 開始匹配,所有優(yōu)先級(jí)最低。

      location / {  [ configuration L3  ]  }

      4.匹配任何以/p_w_picpaths/開始的請(qǐng)求,并且停止匹配其他的loation;

      location = /p_w_picpaths/ {  [ configuration L4 ]  }

      5.匹配以html、txt、gif、jpg、jpeg結(jié)尾的URL文件請(qǐng)求, 但是所有/p_w_picpaths/目錄的請(qǐng)求將由 [Configuration L4]處理。

      location ~* .(html|txt|gif|jpg|jpeg)$ {    [ configuration L5]  }

      瀏覽器發(fā)起HTTP Request URI案例與Location規(guī)則案例匹配如下:

      / -> 匹配configuration L3; /index.html 匹配configuration L2;  /p_w_picpaths/ 匹配configuration L4; /p_w_picpaths/logo.png 匹配configuration L4; /img/test.jpg 匹配configuration L5。

      生產(chǎn)環(huán)境中無需在Nginx.conf配置文件中同時(shí)添加五種規(guī)則匹配,如下為企業(yè)生產(chǎn)環(huán)境Nginx Location部分配置代碼:

      #匹配/,優(yōu)先級(jí)最低
      location /
      {
          root /var/www/html/;
       expires      60d;
      }
      #匹配靜態(tài)頁面,由本地解析
      location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
      {
       root /var/www/html/; 
       expires      60d;     
      }
      #匹配動(dòng)態(tài)頁面,交給后端服務(wù)器
      location ~ .*.(jsp|php|cgi|do)$
      {
          root /var/www/html/;
          proxy_pass http://linux_web;
          proxy_http_version 1.1;
          proxy_set_header Connection “”;
          proxy_set_header Host  $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
      }
      #直接匹配newindex.html,優(yōu)先級(jí)最高
      location =/newindex.html
      {
          root /var/www/newwww/;
       expires      60d;
      }

      Nginx Rewrite

      Rewirte規(guī)則也稱為規(guī)則重寫,主要功能是實(shí)現(xiàn)瀏覽器訪問HTTP URL的跳轉(zhuǎn),其正則表達(dá)式是基于Perl語言。通常而言,幾乎所有的WEB服務(wù)器均可以支持URL重寫。

      Rewrite URL規(guī)則重寫的用途:

      • 對(duì)搜索引擎優(yōu)化(Search Engine Optimization,SEO)友好,利于搜索引擎抓取網(wǎng)站頁面;
      • 隱藏網(wǎng)站URL真實(shí)地址,瀏覽器顯示更加美觀;
      • 網(wǎng)站變更升級(jí),可以基于Rewrite臨時(shí)重定向到其他頁面。
      • Nginx Rewrite是由ngx_http_rewrite_module模塊提供;
      • Nginx Rewrite可以使用正則替換URL,返回重定向頁面。
      • Nginx Rewrite是按順序進(jìn)行匹配的。
      • Nginx Rewrite放在server,location,if上下文。

      Nginx Rewrite規(guī)則使用中有三個(gè)概念需要理解,分別是:Rewrite結(jié)尾標(biāo)識(shí)符、Rewrite規(guī)則常用表達(dá)式、Nginx Rewrite變量,如下為三個(gè)概念的詳解:

      Rewrite結(jié)尾標(biāo)識(shí)符:由于Rewrite規(guī)則末尾,表示規(guī)則的執(zhí)行屬性。

      1.last :相當(dāng)于Apache里的(L)標(biāo)記,表示完成rewrite匹配,匹配完成后還會(huì)向下繼續(xù)匹配。

      2.break:本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則.

      3.redirect:返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址。

      4.permanent:返回301永久重定向,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址。

      其中l(wèi)ast和break用來實(shí)現(xiàn)URL重寫時(shí),瀏覽器地址欄URL地址不變。

      Rewrite規(guī)則常用表達(dá)式:要用于匹配參數(shù)、字符串及過濾設(shè)置。

      符號(hào) 意義
      . 匹配任何單個(gè)字符
      [word] 匹配字符串word
      [^word] 不匹配字符串word
      aa|bb 可選擇字符串a(chǎn)a|bb
      ? 匹配0到1個(gè)字符
      * 匹配0到多個(gè)字符
      + 匹配1到多個(gè)字符
      ^ 字符串開始標(biāo)志
      $ 字符串結(jié)尾標(biāo)志
      n 轉(zhuǎn)義字符

      Rewrite變量:常用于匹配HTTP請(qǐng)求頭信息、瀏覽器主機(jī)名、URL等。

      HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT;
      connection & request: REMOTE_ADDR, QUERY_STRING;
      server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL;
      system stuff: TIME_YEAR, TIME_MON, TIME_DAY。

      詳解如下:
      HTTP_USER_AGENT  用戶使用的代理,例如瀏覽器;
      HTTP_REFERER 告知服務(wù)器,從哪個(gè)頁面來訪問的;
      HTTP_COOKIE            客戶端緩存,主要用于存儲(chǔ)用戶名和密碼等信息;
      HTTP_HOST 匹配服務(wù)器ServerName域名;
      HTTP_ACCEPT 客戶端的瀏覽器支持的MIME類型;
      REMOTE_ADDR 客戶端的IP地址
      QUERY_STRING URL中訪問的字符串;
      DOCUMENT_ROOT        服務(wù)器發(fā)布目錄;
      SERVER_PORT 服務(wù)器端口;
      SERVER_PROTOCOL 服務(wù)器端協(xié)議;
      TIME_YEAR 年;
      TIME_MON 月;
      TIME_DAY 日;

      補(bǔ)充: if指令:

      語法: if (condition) { … } 默認(rèn)值: — 上下文: server, location

      計(jì)算指定condition的值。計(jì)算指定的condition的值。如果為真,執(zhí)行定義在大括號(hào)中的rewrite模塊指令,并將if指令中的配置指定給請(qǐng)求。if指令會(huì)從上一層配置中繼承配置。

      condition為下:

      條件 解釋
      變量名 如何變量值為空或者以0開始的字符串,則為假
      = 運(yùn)算符等于,則為真
      != 運(yùn)算符不等于,則為真
      ~ 大小寫敏感,匹配變量和正則
      ~* 大小寫不敏感,匹配變量和正則
      -f | !-f 檢查文件是否存在
      -d | !-d 檢查目錄是否存在
      -e | !-e 檢查文件,目錄或符號(hào)鏈接是否存在
      -x | !-x 檢查是否是可執(zhí)行文件

      Nginx Rewrite案例

      1.將www.abc1.com 跳轉(zhuǎn)到 www.abc2.com

      if ( $host = ‘www.abc1.com’ ){    rewrite ^/(.*)$ http://www.abc2.com/$1 permanent;  }

      2.訪問www.abc1.com跳轉(zhuǎn)www.abc1.com/newindex.html

      rewrite ^/$ http://www.abc1.com/newindex.html permanent;

      3.訪問/test/跳轉(zhuǎn)到www.abc1.com/newindex.html

      rewrite ^/test/$ http://www.abc1.com/newindex.html permanent;

      4.多域名跳轉(zhuǎn)到 www.abc1.com

      if ( $host != ‘www.abc1.com’ ) {  rewrite ^/(.*)$  http://www.abc1.com/$1  permanent;  }

      5.訪問文件和目錄不存在跳轉(zhuǎn)至index.html。

      if ( !-e $request_filename )  {  rewrite  ^/(.*)$  /index.html  last;  }

      6.目錄對(duì)換 /xxxx/123456 ====> /xxxx?id=123456

      rewrite ^/(.+)/(d+)  /$1?id=$2 last;

      7.判斷瀏覽器User Agent跳轉(zhuǎn)。

      if( $http_user_agent  ~ MSIE) { rewrite ^(.*)$ /ie/$1 break; }

      8.禁止訪問以.sh,.flv,.mp3為文件后綴名的文件。

      location ~ .*.(sh|flv|mp3)$  {  return 403;  }

      9.將移動(dòng)用戶訪問跳轉(zhuǎn)至移動(dòng)端。

      if ( $http_user_agent ~* “(Android)|(iPhone)|(Mobile)|(WAP)|(UCWEB)” )  {  rewrite ^/$      http://m.linuxidc.net/      permanent;  }

      10.匹配URL訪任意字符串后面含有?tid=13就跳轉(zhuǎn),$args 表示任意字符串

      if ( $args ~* tid=13 ){  return 404; }

      11.訪問/10690/jj/123跳轉(zhuǎn)至/index.php?tid/10690/items=123,[0-9]表示任意一個(gè)數(shù)字,+表示多個(gè),(.+)表示任何多個(gè)字符。

      rewrite  ^/([0-9]+)/jj/(.+)$    /index.php?tid/$1/items=$2    permanent;

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