<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      3.5 nginx常用模塊

      1 Module ngx_http_gzip_module

      ngx_http_gzip_module模塊是一個使用“gzip”方法壓縮響應的過濾器。這通常有助于將傳輸數據的大小減少一半甚至更多。

      使用SSL / TLS協議時,壓縮的響應可能會受到 BREACHopen in new window攻擊。

      在實際的應用中我們發現壓縮的比率往往在 3 到 10 倍,也就是本來 50k 大小的頁面,采用壓縮后實際傳輸的內容大小只有 5 至 15k 大小,這可以大大節省服務器的網絡帶寬,同時如果應用程序的響應足夠快時,網站的速度瓶頸就轉到了網絡的傳輸速度上,因此內容壓縮后就可以大大的提升頁面的瀏覽速度。

      1.1 Example Configuration

      gzip on;
      gzip_buffers 4 8k;
      gzip_comp_level 6;
      gzip_disable "MSIE [1-6]\.";
      gzip_http_version 1.1;
      gzip_min_length 1000;
      gzip_proxied any;
      gzip_vary on;
      gzip_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json image/jpeg image/gif image/png image/jpg;
      
       

      1.2 Directives

      gzip

      Syntax:	gzip on | off;
      Default: gzip off;
      Context:	http, server, location, if in location
      
       

      啟用或禁用gzipping響應。

      gzip_buffers

      Syntax:	gzip_buffers number size;
      Default: gzip_buffers 32 4k|16 8k;
      Context:	http, server, location
      
       

      設置用于壓縮響應的緩沖區*number**size*。默認情況下,緩沖區大小等于一個內存頁面。這是4K或8K,具體取決于平臺。

      gzip_comp_level

      Syntax:	gzip_comp_level level;
      Default: gzip_comp_level 1;
      Context:	http, server, location
      
       

      設置level響應的gzip壓縮。可接受的值范圍為1到9。

      推薦6壓縮級別(級別越高,壓的越小,越浪費CPU計算資源)

      gzip_disable

      Syntax:	gzip_disable regex ...;
      Default: —
      Context:	http, server, location
      
       

      對具有與任何指定正則表達式匹配的“User-Agent”標頭字段的請求禁用gzipping響應。

      特殊掩碼“ msie6”(0.7.12)對應于正則表達式“ MSIE [4-6]\.”,但效果更快。

      gzip_http_version

      Syntax:	gzip_http_version 1.0 | 1.1;
      Default: gzip_http_version 1.1;
      Context:	http, server, location
      
       

      設置壓縮響應所需的最低HTTP請求版本。

      99.99%的瀏覽器基本上都支持gzip解壓了,所以可以不用設這個值,保持系統默認即可。

      gzip_min_length

      Syntax:	gzip_min_length length;
      Default: gzip_min_length 20;
      Context:	http, server, location
      
       

      設置將被gzip壓縮的響應的最小長度。長度僅由“Content-Length”響應頭字段確定。

      gzip_proxied

      Syntax:	gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any ...;
      Default: gzip_proxied off;
      Context:	http, server, location
      
       

      根據請求和響應啟用或禁用對代理請求的響應的gzipping。請求被代理的事實由“Via”請求頭字段的存在確定。該指令接受多個參數:

      • off:禁用所有代理請求的壓縮,忽略其他參數;
      • expired:如果響應頭包含“Expires”字段,其值為禁用緩存,則啟用壓縮;
      • no-cache:如果響應頭包含帶有“ no-cache”參數的“Cache-Control”字段,則啟用壓縮;
      • no-store:如果響應頭包含帶有“ no-store”參數的“Cache-Control”字段,則啟用壓縮;
      • private:如果響應頭包含帶有“ private”參數的“Cache-Control”字段,則啟用壓縮;
      • no_last_modified:如果響應頭不包含“Last-Modified”字段,則啟用壓縮;
      • no_etag:如果響應頭不包含“ETag”字段,則啟用壓縮;
      • auth:如果請求標頭包含“授權”字段,則啟用壓縮;
      • any:為所有代理請求啟用壓縮。

      gzip_types

      Syntax:	gzip_types mime-type ...;
      Default:	gzip_types text/html;
      Context:	http, server, location
      
       

      除了“ text/html” 之外,還允許對指定的MIME類型進行gzipping響應。特殊值“ *”匹配任何MIME類型。

      圖片類型的文件壓縮比例很小,可以不忽略不計,所以圖片不建議壓縮

      gzip_vary

      Syntax:	gzip_vary on | off;
      Default:	gzip_vary off;
      Context:	http, server, location
      
       

      如果指令gzipopen in new windowgzip_staticopen in new windowgunzipopen in new window 處于活動狀態, 則啟用或禁用插入“Vary:Accept-Encoding”響應頭字段 。

      1.3 常見問題

      調用接口時,返回json亂碼的問題

      原因:

      gzip是nginx的壓縮格式。(gzip是瀏覽器可接受的壓縮格式) 但是我們調用接口并沒有通過瀏覽器。所以沒有辦法對返回的結果進行解壓。

      解決辦法:

      • 在響應的location中關閉gzip
      • 或者讓后端改代碼,增加判斷,然后用gzip流的方式進行解壓讀取

      2 Module ngx_http_log_module

      2.1 Example Configuration

      log_format compression '$remote_addr - $remote_user [$time_local] '
                             '"$request" $status $bytes_sent '
                             '"$http_referer" "$http_user_agent" "$gzip_ratio"';
      
      access_log /spool/logs/nginx-access.log compression buffer=32k;
      
       

      2.2 access_log指令

      Syntax:	access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
      		access_log off;
      Default:	access_log logs/access.log combined;
      Context:	http, server, location, if in location, limit_except
      
       

      2.3 log_format指令

      Syntax:	log_format name [escape=default|json|none] string ...;
      Default:	log_format combined "...";
      Context:	http
      
       

      3 Rewrite模塊

      3.1 return指令

      Syntax:	return code [text];
      		return code URL;
      		return URL;
      Default:	—
      Context:	server, location, if
      
       

      返回狀態碼

      • nginx自定義
        • 444:關閉連接
      • HTTP1.0標準
        • 301:http1.0永久重定向
        • 302:臨時重定向,禁止被緩存
      • HTTP1.1標準
        • 303:臨時重定向,允許改變方法,禁止被緩存
        • 307:臨時重定向,不允許改變方式,禁止被緩存
        • 308:永久重定向,不允許改變方法

      示例

      server {
          server_name wiki.clay-wangzhi.com;
          listen 8080;
          
          root html/;
          error_page 404/403.html;
          return 403;
          location / {
              return 404 "find nothing!";
          }
      }
      
       

      return指令與errror_page

      3.2 rewrite指令

      Syntax:	rewrite regex replacement [flag];
      Default:	—
      Context:	server, location, if
      
       

      功能

      • 將regex指定的url替換成replacement這個新的url

        可以使用正則表達式及變量提取

      • 當replacement以http://或者https://或者$schema開頭,則直接返回302重定向

      • 替換后的url根據flag指定的方式進行處理

        如果在同一級配置塊中存在多個rewrite規則,那么會自下而下逐個檢查;被某條件規則替換完成后,會重新一輪的替換檢查,因此,隱含有循環機制;[flag]所表示的標志位用于控制此循環機制;

        • last:

          • 瀏覽器地址欄URL地址不變
          • 用replacement這個URI進行新的location匹配,重寫完成后停止對當前URI在當前location中后續的其它重寫操作,而后對新的URI啟動新一輪重寫檢查;提前重啟新一輪循環;
        • beak:

          • 瀏覽器地址欄URL地址不變
          • break指令停止當前腳本指令的執行,等價于獨立的break指令,重寫完成后停止對當前URI在當前location中后續的其它重寫操作,而后直接跳轉至重寫規則配置塊之后的其它配置;結束循環;
        • redirect:

          • 瀏覽器地址會顯示跳轉后的URL地址
          • 返回302臨時重定向,
        • permanent:

          • 瀏覽器地址會顯示跳轉后的URL地址
          • 返回301永久重定向

      功能一句話概括為:使用nginx提供的全局變量或自己設置的變量,結合正則表達式和標志位實現url重寫以及重定向。

      示例1

              root html/;
              location /first {
                  rewrite /first(.*) /second$1 last;
                  return 200 'first!';
              }
      
              location /second {
                  rewrite /second(.*) /third$1 break;
                  return 200 'second!';
              }
      
              location /third {
                  return 200 'third!';
              }
      
       

      訪問/first/1.txt的結果為:html/third/1.txt的內容

      訪問/second/1.txt的結果為:html/third/1.txt的內容

      訪問/third/1.txt的結果為:third的內容

      示例2

      # http://www.test.com/test/abc/1.html ? http://www.test.com/ccc/bbb/2.html
      location /test {
          rewrite .* /ccc/bbb/2.html permanent;
      }
      
      # http://www.test.com/2015/ccc/bbb/2.html ==> http://www.test.com/2014/ccc/bbb/2.html
      location /2015 {
          rewrite ^/2015/(.*)$ /2014/$1 permanent;
      }
      
      # http://www.test.com/2015/ccc/bbb/2.html  ==> http://jd.com/index.php
      location /2015 {
          if ($host ~* test.com) {
              rewrite .* http://www.jd.com/index.php permanent;
          }
      }
      
      # http://www.test.com/kkk/1.html ==> http://jd.com/kkk/1.html
      location / {
          root html;
          index index.html index.htm;
          if ($host ~* test.com) {
              rewrite .* http://www.jd.com/$request_uri permanent;
          }
      }
      
      # 有時候在訪問一個二級子目錄時會出現目錄后的/無法補齊,如:
      #  elinks --dump www.test.com/www  無法訪問
      #  elinks --dump www.test.com/www/可以訪問 
      if (-d $request_filename) {
          rewrite ^(.*)([^/])$ http://$host$1$2/ permanent;
      }
      # ^/(.*)([^/])$表示以/符號開始并緊跟著任何字符,同時不是以/為結束的字符串,在我的url中,(.*)表示的ww,([^/])表示的w
      
      # http://www.test.com/login/robin.html     ==>  http://www.test.com/reg/login.php?user=robin
      location /login {
          rewrite ^/login/(.*)\.html$ /reg/login.php?user=$1 permanent;
      }
      
      # http://www.test.com/uplook/10-10-10.html  ==>  http://www.test.com/uplook/10/10/10.html 
      location /uplook {
          rewrite ^/uplook/([0-9]+)-([0-9]+)-([0-9]+)\.html$ /uplook/$1/$2/$3.html permanent;
      }
      
      # set 指令是用于定義一個變量,并且賦值。應用于server,location,if環境。
      # http://robin.test.com ==> http://www.test.com/robin
      # http://zorro.test.com ==> http://www.test.com/zorro
      if ($host ~* "^www.test.com$") {
          break;
      }
      if ($host ~* "^(.*)\.test\.com$") {
          set $user $1;
          rewrite .* http://www.test.com/$user permanent;
      }
      
       

      last 一般寫在server和if中,而break一般使用在location中

      3.3 if指令

      Syntax:	if (condition) { ... }
      Default:	—
      Context:	server, location
      
       

      規則:條件condition為真,則執行大括號內的指令;遵循值指令的繼承規則

      if指令的條件表達式

      • 檢查變量為空或者值是否為0,直接使用
        • 當表達式只是一個變量時,如果值為空或任何以 0 開頭的字符串都會當做 false
      • 將變量與字符串做匹配,使用=或者!=
      • 將變量與正則表達式做匹配
        • 大小寫敏感,~或者!~
        • 大小寫不敏感,~*或者!~*
      • 檢查文件是否存在,使用-f或者!-f
      • 檢查目錄是否存在,使用-d或者!-d
      • 檢查文件、目錄、軟連接是否存在,使用-e或者!-e
      • 檢查是否為可執行文件,使用-x或者!-x

      示例

      if ($http_user_agent ~ MSIE) {
          rewrite ^(.*)$ /msie/$1 break;
      }
      if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
          set $id $1;
      }
      if ($repuest_method = POST) {
          return 405;
      }
      if ($slow) {
          limit_rate 10k;
      }
      if ($invalid_referer) {
          return 403;
      }
      
       

      3.4 rewrite_log指令

      Syntax: rewrite_log on | off;
      Default:    rewrite_log off;
      Context:    http, server, location, if
      
       

      4 realip模塊

      • 默認不會編譯進Nginx,通過--with-http_reaip_module啟用功能
      • 功能:修改客戶端地址
      • 指令:set_real_ip_from、real_ip_header、real_ip_recursive
      • 變量:reaip_remote_addr、reaip_remote_port

      4.1 Directives

      5 limit_conn模塊

      生效階段:NGX_HTTP_PREACCESS_PHASE階段

      生效范圍:全部worker進程(基于共享內存),進入preaccess階段前不生效,限制的有效性取決于key的設計:依賴postread階段的realip模塊取到真實ip

      5.1 指令

      6 limit_req模塊

      6.1 指令

      限制發生時向客戶端返回的錯誤碼

      Syntax:	limit_req_status code;
      Default:	limit_req_status 503;
      Context:	http, server, location
      
       

      limit_req 與 limit_conn 配置同時生效時, limit_req有效

      6.2 Example

      http {
          geo $limit {
              default 1;
              10.0.0.0/8 0;
              192.168.0.0/64 0;
          }
          
          map $limit $limit_key {
              0 "";
              1 $binary_remote_addr;
          }
          
          limit_req_zone $limit_key zone=req_zone:10m rate=5r/s;
          
          server {
              location / {
                  limit_req zone=req_zone burst=10 nodelay;
              }
          }
      }
      
       

      這個例子同時使用了geo和map指令。geo塊將給在白名單中的IP地址對應的$limit變量分配一個值0,給其它不在白名單中的分配一個值1。然后我們使用一個映射將這些值轉為key,如下:

      如果$limit變量的值是0,$limit_key變量將被賦值為空字符串

      如果$limit變量的值是1,$limit_key變量將被賦值為客戶端二進制形式的IP地址

      兩個指令配合使用,白名單內IP地址的$limit_key變量被賦值為空字符串,不在白名單內的被賦值為客戶端的IP地址。當limit_req_zone后的第一個參數是空字符串時,不會應用“流量限制”,所以白名單內的IP地址(10.0.0.0/8和192.168.0.0/24 網段內)不會被限制。其它所有IP地址都會被限制到每秒5個請求。

      limit_req指令將限制應用到**/**的location塊,允許在配置的限制上最多超過10個數據包的突發,并且不會延遲轉發。

      posted @ 2024-07-09 15:14  david_cloud  閱讀(96)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 丝袜美腿一区二区三区| 国产成人无码A区在线观| 国产精品99久久久久久董美香 | 久久天堂综合亚洲伊人HD妓女| 少妇被粗大的猛烈进出动视频 | 中文字幕无码免费久久9一区9| 黑森林福利视频导航| 精品黄色av一区二区三区| 五月天天天综合精品无码| 18禁裸乳无遮挡自慰免费动漫| 亚洲国产成人综合自在线| 国产av中文字幕精品| 99久久亚洲精品无码毛片| 欧美寡妇xxxx黑人猛交| 一区二区三区久久精品国产 | 国产又色又爽又高潮免费| 日韩av在线不卡一区二区| 亚洲欧洲日韩国内精品| 国产乱码一区二区三区| 亚洲国产成人无码影片在线播放| 亚洲一二三四区中文字幕| 亚洲日韩AV秘 无码一区二区| 久久天天躁狠狠躁夜夜躁2o2o | 国产精品视频中文字幕| 久久人人妻人人做人人爽| 91偷自国产一区二区三区| 久热这里只有精品12| 乌克兰美女浓毛bbw| 久久久久夜夜夜精品国产| 成人午夜大片免费看爽爽爽| 亚洲欧美电影在线一区二区| 国产精品久久久福利| 国产精品推荐视频一区二区| 在线 欧美 中文 亚洲 精品| 综合色天天久久| 日韩本精品一区二区三区| 国产精品无码不卡在线播放| 成人精品区| 日本道高清一区二区三区| 国产婷婷色一区二区三区| 日本xxxx色视频在线播放|