當前位置:
首頁 > 知識 > Nginx 使用札記

Nginx 使用札記

作者:Mmzer

來自:https://segmentfault.com/a/1190000013781162




nginx是什麼?

nginx是俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的一個十分輕量級的HTTP伺服器。它是一個高性能的HTTP和反向代理伺服器,同時也可以作為IMAP/POP3/SMTP的代理伺服器。nginx使用的是BSD許可。

Nginx 以事件驅動的方式編寫,所以有非常好的性能,同時也是一個非常高效的反向代理、負載平衡。

Nginx 因為它的穩定性、豐富的模塊庫、靈活的配置和低系統資源的消耗而聞名。

nginx適合用來做mongrel clusters 的前端 HTTP 響應。


為什麼要用nginx,nginx有什麼特點?

nginx的特點(https://www.ctolib.com/topics-101000.html):




  • 核心特點:高並發請求的同時保持高效的服務



  • 熱部署



  • 低內存消耗



  • 處理響應請求很快



  • 具有很高的可靠性

同時,nginx也可以實現高效的反向代理、負載均衡。

前端可以用nginx做些什麼?




  • 搭建靜態資源伺服器



  • 反向代理分發後端服務(可以和nodejs搭配實現前後端分離)和跨域問題



  • 根據User Agent來重定向站點



  • 開發環境或測試環境切換(切換host)



  • url重寫,使用rewrie規則本地映射



  • 資源內容篡改



  • 獲取cookie做分流



  • 資源合併



  • gzip壓縮



  • 壓縮圖片



  • sourceMap調試


如何安裝nginx?


mac安裝:

安裝brew之後,執行命令:

  1. $ sudo brew install nginx


windows安裝




  1. 下載: nginx官網



  2. 解壓運行:解壓至 

    c

    :

    ginx

    ,運行 

    nginx

    .

    exe

    (即 

    nginx

    -

    c conf ginx

    .

    conf

    ),默認使用80埠,日誌見文件夾 

    C

    :

    ginxlogs



  3. 關閉: 

    nginx

    -

    s stop

     或 

    taskkill

    /

    F

    /

    IM nginx

    .

    exe

    >

    nul

註:以下皆以mac為例。


nginx如何啟動、重啟、關閉?

查看nginx版本:

nginx

-

v

啟動nginx服務:




  • 方法一:運行命令: 

    sudo brew services start nginx



  • 方法二:運行命令: 

    nginx

訪問http://localhost:8080,出現如下界面則表示安裝成功:

關閉nginx服務:




  • 方法一:運行命令: 

    sudo brew services stop nginx



  • 方法二:運行命令: 

    nginx

    -

    s stop



  • 方法三:




    • 運行命令: 

      ps

      -

      ef

      |

      grep nginx

      ,找到master對應的進程號。



    • 快速停止: 

      kill

      -

      TERM nginx

      進程號

      或 

      kill

      -

      INT nginx

      進程號



    • 從容停止: 

      kill

      -

      QUIT nginx

      進程號



    • 強制停止所有nginx進程: 

      pkill

      -

      9

      nginx

重啟nginx服務:




  • 方法一: 

    nginx

    -

    s reload



  • 方法二: 平滑重啟命令: 

    kill

    -

    HUP nginx

    進程號

nginx信號控制:




  • TERM

    ,

    INT

     快速關閉



  • QUIT

     從容關閉



  • HUP

     平滑重啟,重新載入配置文件



  • USR1

     重新打開日誌文件,在切割日誌時用途較大



  • USR2

     平滑升級可執行程序



  • WINCH

     從容關閉工作進程


如何查看nginx的配置文件nginx.conf的路徑和安裝路徑?

查看配置文件位置和測試配置文件語法:運行命令

nginx

-

t

:

查看nginx安裝路徑:因為是使用brew安裝的,所以使用brew命令:

brew info nginx


nginx.conf基本配置有哪些?

nginx配置文件主要分成四個部分:




  • main,全局設置,影響其它部分所有設置



  • server,主機服務相關設置,主要用於指定虛擬主機域名、IP和埠



  • location,URL匹配特定位置後的設置,反向代理、內容篡改相關設置



  • upstream,上游伺服器設置,負載均衡相關配置

他們之間的關係式:server繼承main,location繼承server;upstream既不會繼承指令也不會被繼承。

如下是一份通用的配置和詳解:

  1. #定義 Nginx 運行的用戶和用戶組,默認由 nobody 賬號運行, windows 下面可以注釋掉。

  2. user  nobody

    ;

  3. #nginx進程數,建議設置為等於CPU總核心數。可以和worker_cpu_affinity配合

  4. worker_processes  

    1

    ;

  5. #全局錯誤日誌定義類型,[ debug | info | notice | warn | error | crit ]

  6. #error_log  logs/error.log;

  7. #error_log  logs/error.log  notice;

  8. #error_log  logs/error.log  info;

  9. #進程文件,window下可以注釋掉

  10. #pid        logs/nginx.pid;

  11. # 一個nginx進程打開的最多文件描述符(句柄)數目,理論值應該是最多打開文件數(系統的值ulimit -n)與nginx進程數相除,

  12. # 但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。

  13. worker_rlimit_nofile

    65535

    ;

  14. #工作模式與連接數上限

  15. events

    {

  16.    

    # 參考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];

  17.    

    # epoll模型是Linux 2.6以上版本內核中的高性能網路I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

  18.  

    #use epoll;

  19.  

    #connections 20000;  # 每個進程允許的最多連接數

  20.  

    # 單個進程最大連接數(最大連接數=連接數*進程數)該值受系統進程最大打開文件數限制,需要使用命令ulimit -n 查看當前設置

  21.   worker_connections

    65535

    ;

  22. }

  23. #設定http伺服器

  24. http

    {

  25.    

    #文件擴展名與文件類型映射表

  26.    

    #include

    是個主模塊指令,可以將配置文件拆分並引用,可以減少主配置文件的複雜度

  27.    include       mime

    .

    types

    ;

  28.    

    #默認文件類型

  29.    default_type  application

    /

    octet

    -

    stream

    ;

  30.    

    #charset utf-8; #默認編碼

  31.    

    #定義虛擬主機日誌的格式

  32.    

    #log_format  main  "$remote_addr - $remote_user [$time_local] "$request" "

  33.    

    #                  "$status $body_bytes_sent "$http_referer" "

  34.    

    #                  ""$http_user_agent" "$http_x_forwarded_for"";

  35.    

    #定義虛擬主機訪問日誌

  36.    

    #access_log  logs/access.log  main;

  37.    

    #開啟高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設為 on,如果用來進行下載等應用磁碟IO重負載應用,可設置為off,以平衡磁碟與網路I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。

  38.    sendfile        on

    ;

  39.    

    #autoindex on; #開啟目錄列表訪問,合適下載伺服器,默認關閉。

  40.    

    #防止網路阻塞

  41.    

    #tcp_nopush     on;

  42.    

    #長連接超時時間,單位是秒,默認為0

  43.    keepalive_timeout  

    65

    ;

  44.    

    # gzip壓縮功能設置

  45.    gzip on

    ;

    #開啟gzip壓縮輸出

  46.    gzip_min_length

    1k

    ;

    #最小壓縮文件大小

  47.    gzip_buffers    

    4

    16k

    ;

    #壓縮緩衝區

  48.    gzip_http_version

    1.0

    ;

    #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)

  49.    gzip_comp_level

    6

    ;

    #壓縮等級

  50.    

    #壓縮類型,默認就已經包含text/html,所以下面就不用再寫了,寫上去也不會有問題,但是會有一個warn。

  51.    gzip_types text

    /

    plain text

    /

    css text

    /

    javascript application

    /

    json application

    /

    javascript application

    /

    x

    -

    javascript application

    /

    xml

    ;

  52.    gzip_vary on

    ;

    //和http頭有關係,加個vary頭,給代理伺服器用的,有的瀏覽器支持壓縮,有的不支持,所以避免浪費不支持的也壓縮,所以根據客戶端的HTTP頭來判斷,是否需要壓縮

  53.    

    #limit_zone crawler $binary_remote_addr 10m; #開啟限制IP連接數的時候需要使用

  54.    

    # http_proxy服務全局設置

  55.    client_max_body_size  

    10m

    ;

  56.    client_body_buffer_size  

    128k

    ;

  57.    proxy_connect_timeout  

    75

    ;

  58.    proxy_send_timeout  

    75

    ;

  59.    proxy_read_timeout  

    75

    ;

  60.    proxy_buffer_size  

    4k

    ;

  61.    proxy_buffers  

    4

    32k

    ;

  62.    proxy_busy_buffers_size  

    64k

    ;

  63.    proxy_temp_file_write_size  

    64k

    ;

  64.    proxy_temp_path  

    /

    usr

    /

    local

    /

    nginx

    /

    proxy_temp

    1

    2

    ;

  65.  

    # 設定負載均衡後台伺服器列表

  66.    upstream  backend

    .

    com  

    {

  67.        

    #ip_hash; # 指定支持的調度演算法

  68.        

    # upstream 的負載均衡,weight 是權重,可以根據機器配置定義權重。weigth 參數表示權值,權值越高被分配到的幾率越大。

  69.        server  

    192.168

    .

    10.100

    :

    8080

    max_fails

    =

    2

    fail_timeout

    =

    30s

    ;

     

  70.        server  

    192.168

    .

    10.101

    :

    8080

    max_fails

    =

    2

    fail_timeout

    =

    30s

    ;

     

  71.    

    }

  72.    

    #虛擬主機的配置

  73.    server

    {

  74.        

    #監聽埠

  75.        listen      

    80

    ;

  76.        

    #域名可以有多個,用空格隔開

  77.        server_name  localhost fontend

    .

    com

    ;

  78.        

    # Server Side Include,通常稱為伺服器端嵌入

  79.        

    #ssi on;

  80.        

    #默認編碼

  81.        

    #charset utf-8;

  82.        

    #定義本虛擬主機的訪問日誌

  83.        

    #access_log  logs/host.access.log  main;

  84.        

    # 因為所有的地址都以 / 開頭,所以這條規則將匹配到所有請求

  85.        location

    /

    {

  86.            root   html

    ;

  87.            index  index

    .

    html index

    .

    htm

    ;

  88.        

    }

  89.        

    #error_page  404              /404.html;

  90.        

    # redirect server error pages to the static page /50x.html

  91.        

    #

  92.        error_page  

    500

    502

    503

    504

     

    /

    50x

    .

    html

    ;

  93.        location

    =

    /

    50x

    .

    html

    {

  94.            root   html

    ;

  95.        

    }

  96.      

    # 圖片緩存時間設置

  97.       location

    ~

    .*.(

    gif

    |

    jpg

    |

    jpeg

    |

    png

    |

    bmp

    |

    swf

    )

    $

    {

  98.          expires

    10d

    ;

  99.      

    }

  100.      

    # JS和CSS緩存時間設置

  101.       location

    ~

    .*.(

    js

    |

    css

    )?

    $

    {

  102.          expires

    1h

    ;

  103.      

    }

  104.        

    #代理配置

  105.        

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

  106.        

    #location /proxy/ {

  107.        

    #    proxy_pass   http://127.0.0.1;

  108.        

    #}

  109.        

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

  110.        

    #

  111.        

    #location ~ .php$ {

  112.        

    #    root           html;

  113.        

    #    fastcgi_pass   127.0.0.1:9000;

  114.        

    #    fastcgi_index  index.php;

  115.        

    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

  116.        

    #    include        fastcgi_params;

  117.        

    #}

  118.        

    # deny access to .htaccess files, if Apache"s document root

  119.        

    # concurs with nginx"s one

  120.        

    #

  121.        

    #location ~ /.ht {

  122.        

    #    deny  all;

  123.        

    #}

  124.    

    }

  125.    

    # another virtual host using mix of IP-, name-, and port-based configuration

  126.    

    #

  127.    

    #server {

  128.    

    #    listen       8000;

  129.    

    #    listen       somename:8080;

  130.    

    #    server_name  somename  alias  another.alias;

  131.    

    #    location / {

  132.    

    #        root   html;

  133.    

    #        index  index.html index.htm;

  134.    

    #    }

  135.    

    #}

  136.    

    # HTTPS server

  137.    

    #

  138.    

    #server {

  139.    

    #    listen       443 ssl;

  140.    

    #    server_name  localhost;

  141.    

    #    ssl_certificate      cert.pem;

  142.    

    #    ssl_certificate_key  cert.key;

  143.    

    #    ssl_session_cache    shared:SSL:1m;

  144.    

    #    ssl_session_timeout  5m;

  145.    

    #    ssl_ciphers  HIGH:!aNULL:!MD5;

  146.    

    #    ssl_prefer_server_ciphers  on;

  147.    

    #    location / {

  148.    

    #        root   html;

  149.    

    #        index  index.html index.htm;

  150.    

    #    }

  151.    

    #}

  152. }


location如何匹配?

示例:

  1. location  

    =

    /

    {

  2.  

    # 精確匹配 / ,主機名後面不能帶任何字元串

  3.  

    [

    configuration A

    ]

  4. }

  5. location  

    /

    {

  6.  

    # 因為所有的地址都以 / 開頭,所以這條規則將匹配到所有請求

  7.  

    # 但是正則和最長字元串會優先匹配

  8.  

    [

    configuration B

    ]

  9. }

  10. location

    /

    documents

    /

    {

  11.  

    # 匹配任何以 /documents/ 開頭的地址,匹配符合以後,還要繼續往下搜索

  12.  

    # 只有後面的正則表達式沒有匹配到時,這一條才會採用這一條

  13.  

    [

    configuration C

    ]

  14. }

  15. location

    ~

    /documents/

    Abc

    {

  16.  

    # 匹配任何以 /documents/ 開頭的地址,匹配符合以後,還要繼續往下搜索

  17.  

    # 只有後面的正則表達式沒有匹配到時,這一條才會採用這一條

  18.  

    [

    configuration CC

    ]

  19. }

  20. location

    ^~

    /

    images

    /

    {

  21.  

    # 匹配任何以 /images/ 開頭的地址,匹配符合以後,停止往下搜索正則,採用這一條。

  22.  

    [

    configuration D

    ]

  23. }

  24. location

    ~*

    .

    (

    gif

    |

    jpg

    |

    jpeg

    )

    $

    {

  25.  

    # 匹配所有以 gif,jpg或jpeg 結尾的請求

  26.  

    # 然而,所有請求 /images/ 下的圖片會被 config D 處理,因為 ^~ 到達不了這一條正則

  27.  

    [

    configuration E

    ]

  28. }

  29. location

    /

    images

    /

    {

  30.  

    # 字元匹配到 /images/,繼續往下,會發現 ^~ 存在

  31.  

    [

    configuration F

    ]

  32. }

  33. location

    /

    images

    /

    abc

    {

  34.  

    # 最長字元匹配到 /images/abc,繼續往下,會發現 ^~ 存在

  35.  

    # F與G的放置順序是沒有關係的

  36.  

    [

    configuration G

    ]

  37. }

  38. location

    ~

    /images/

    abc

    /

    {

  39.  

    # 只有去掉 config D 才有效:先最長匹配 config G 開頭的地址,繼續往下搜索,匹配到這一條正則,採用

  40.    

    [

    configuration H

    ]

  41. }

  42. location

    ~*

    /

    js

    /.*/

    .js

說明:




  • 以 

    =

    開頭表示精確匹配



  • ^~

     開頭表示uri以某個常規字元串開頭,不是正則匹配



  • ~

    開頭表示區分大小寫的正則匹配;



  • ~*

     開頭表示不區分大小寫的正則匹配



  • /

     通用匹配, 如果沒有其它匹配,任何請求都會匹配到

優先順序:


(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~,~* 正則順序) > (location 部分起始路徑) > (/)


如何配置反向代理?

詳解:

  1. # 對 「/」 啟用反向代理

  2. location

    /

    {

  3.  proxy_pass http

    :

    //127.0.0.1:3000;  # 設置要代理的 uri,注意最後的 /。可以是 Unix 域套接字路徑,也可以是正則表達式。

  4.  proxy_redirect off

    ;

    # 設置後端伺服器「Location」響應頭和「Refresh」響應頭的替換文本

  5.  proxy_set_header X

    -

    Real

    -

    IP $remote_addr

    ;

    # 獲取用戶的真實 IP 地址

  6.  

    #後端的Web伺服器可以通過 X-Forwarded-For 獲取用戶真實IP,多個 nginx 反代的情況下,例如 CDN。參見:http://gong1208.iteye.com/blog/1559835 和 http://bbs.linuxtone.org/thread-9050-1-1.html

  7.  proxy_set_header X

    -

    Forwarded

    -

    For

    $proxy_add_x_forwarded_for

    ;

  8.  

    #以下是一些反向代理的配置,可選。

  9.  proxy_set_header

    Host

    $host

    ;

    # 允許重新定義或者添加發往後端伺服器的請求頭。

  10.  client_max_body_size

    10m

    ;

    #允許客戶端請求的最大單文件位元組數

  11.  client_body_buffer_size

    128k

    ;

    #緩衝區代理緩衝用戶端請求的最大位元組數,

  12.  proxy_connect_timeout

    90

    ;

    #nginx跟後端伺服器連接超時時間(代理連接超時)

  13.  proxy_send_timeout

    90

    ;

    #後端伺服器數據回傳時間(代理髮送超時)

  14.  proxy_read_timeout

    90

    ;

    #連接成功後,後端伺服器響應時間(代理接收超時)

  15.  proxy_buffer_size

    4k

    ;

    #設置代理伺服器(nginx)保存用戶頭信息的緩衝區大小

  16.  proxy_buffers

    4

    32k

    ;

    #proxy_buffers緩衝區,網頁平均在32k以下的設置

  17.  proxy_busy_buffers_size

    64k

    ;

    #高負荷下緩衝大小(proxy_buffers*2)

  18.  proxy_temp_file_write_size

    64k

    ;

  19.  

    #設定緩存文件夾大小,大於這個值,將從upstream伺服器傳

  20. }

舉例:

  1. location

    ^~

    /

    service

    /

    {

  2.  proxy_pass http

    :

    //192.168.60.245:8080/;

  3.  proxy_redirect      

    default

    ;

  4.  proxy_set_header    

    Host

    $host

  5.  proxy_set_header    X

    -

    Real

    -

    IP $remote_addr

    ;

  6.  proxy_set_header    X

    -

    Forwarded

    -

    For

     $proxy_add_x_forwarded_for

    ;

  7. }

簡化:

  1. location

    /

    proxy

    /

    {

  2.  proxy_pass http

    :

    //backend.com/;

  3.  proxy_redirect      

    default

    ;

  4. }


如何配置rewrite?

rewrite功能就是集合正則表達式和標誌位實現url重寫和重定向。rewrite只能放在server{}、location{}、if(){}塊中,並且只能對域名後邊的出去傳遞參數外的字元串起作用。如URL:

http

:

//microloan-sms-platform.yxapp.xyz/proxy/sms/task/querydeleted?page=1&pagesize=10

,只對/proxy/sms/task/querydeleted進行重寫。

如果相對域名或參數字元串起作用,可以使用全局變數匹配,也可以使用proxy_pass反向代理。

表明看rewrite和location功能有點像,都能實現跳轉,主要區別在於rewrite是在同一域名內更改獲取資源的路徑,而location是對一類路徑做控制訪問或反向代理,可以proxy_pass到其他機器。很多情況下rewrite也會寫在location里,它們的執行順序是:




  • 執行server塊的rewrite指令



  • 執行location匹配



  • 執行選定的location中的rewrite指令

如果其中某步URI被重寫,則重新循環執行1-3,直到找到真實存在的文件;循環超過10次,則返回500 Internal Server Error錯誤。

rewrite規則後邊,通常會帶有flag標誌位:




  • last

     : 相當於Apache的[L]標記,表示完成rewrite



  • break

     : 停止執行當前虛擬主機的後續rewrite指令集



  • redirect

     : 返回 

    302

    臨時重定向,地址欄會顯示跳轉後的地址



  • permanent

     : 返回 

    301

    永久重定向,地址欄會顯示跳轉後的地址

last

break

區別:




  • last

    一般寫在 

    server

    和 

    if

    中,而 

    break

    一般使用在 

    location



  • last

    不終止重寫後的url匹配,即新的url會再從 

    server

    走一遍匹配流程,而 

    break

    終止重寫後的匹配



  • break

    和 

    last

    都能組織繼續執行後面的rewrite指令

rewrite常用正則:




  • .

     : 匹配除換行符以外的任意字元



  • ?

     : 重複0次或1次



  • +

     : 重複1次或更多次



  • *

     : 重複0次或更多次



  • d

     :匹配數字



  • ^

     : 匹配字元串的開始



  • $

     : 匹配字元串的介紹



  • {

    n

    }

     : 重複n次



  • {

    n

    ,}

     : 重複n次或更多次



  • [

    c

    ]

     : 匹配單個字元c



  • [

    a

    -

    z

    ]

     : 匹配a-z小寫字母的任意一個

可以使用

()

來進行分組,可以通過

$1

的形式來引用。

示例:

  1. location

    /

    proxy

    /

    {

  2.        proxy_pass http

    :

    //microloan-notification-web.yxapp.in;

  3.        rewrite

    /

    proxy

    /(.*)

    $

    /

    $1

    break

    ;

  4. }


如何配置負載均衡?

示例:

  1. upstream test

    .

    net

    {

  2.   ip_hash

    ;

  3.   server

    192.168

    .

    11.1

    :

    80

    ;

  4.   server

    192.168

    .

    11.11

    :

    80

     down

    ;

  5.   server

    192.168

    .

    11.123

    :

    8009

     max_fails

    =

    3

     fail_timeout

    =

    20s

    ;

  6.   server

    192.168

    .

    11.1234

    :

    8080

    ;

  7. }

upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度演算法來實現客戶端IP到後端伺服器的負載均衡。

Nginx的負載均衡模塊目前支持4種調度演算法:




  • 輪詢(默認)

    。每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某台伺服器宕機,故障系統被自動剔除,使用戶訪問不受影響。Weight 指定輪詢權值,Weight值越大,分配到的訪問機率越高,主要用於後端每個伺服器性能不均的情況下。



  • ip_hash

    。每個請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪問一個後端伺服器,有效解決了動態網頁存在的session共享問題。



  • fair

    。這是比上面兩個更加智能的負載均衡演算法。此種演算法可以依據頁面大小和載入時間長短智能地進行負載均衡,也就是根據後端伺服器的響應時間來分配請求,響應時間短的優先分配。Nginx本身是不支持fair的,如果需要使用這種調度演算法,必須下載Nginx的upstream_fair模塊。



  • url_hash

    。此方法按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,可以進一步提高後端緩存伺服器的效率。Nginx本身是不支持url_hash的,如果需要使用這種調度演算法,必須安裝Nginx 的hash軟體包。

upstream可以設定每個後端伺服器在負載均衡調度中的狀態,支持的狀態參數:




  • down

    ,表示當前的server暫時不參與負載均衡



  • backup

    ,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求 

    backup

    機器,因此這台機器的壓力最輕。



  • max_fails

    ,允許請求失敗的次數,默認為 

    1

    。當超過最大次數時,返回 

    proxy_next_upstream

     模塊定義的錯誤。



  • fail_timeout

    ,在經歷了 

    max_fails

    次失敗後,暫停服務的時間。 

    max_fails

    可以和 

    fail_timeout

    一起使用。

注,當負載調度演算法為ip_hash時,後端伺服器在負載均衡調度中的狀態不能是weight和backup。


如何設置頁面緩存?

頁面緩存設置指令:

proxy_cache_path

:指定緩存的路徑和一些其他參數,緩存的數據存儲在文件中,並且使用代理url的哈希值作為關鍵字與文件名。

  1.      proxy_cache_path

    /

    data

    /

    nginx

    /

    cache

    /

    webserver levels

    =

    1

    :

    2

    keys_zone

    =

    webserver

    :

    20m

    max_size

    =

    1g

    ;

levels

參數指定緩存的子目錄數。

keys_zone

指定活動的key和元數據存儲在共享池(webserver為共享池名稱,20m位共享池大小),

inactive

參數指定的時間內緩存的數據沒有被請求則被刪除,默認inactive為10分鐘

·

max_size

指定緩存空間的大小。




  • proxy_cache

    : 設置一個緩存區域的名稱,一個相同的區域可以在不同的地方使用。



  • proxy_cache_valid

    : 為不同的應答設置不同的緩存時間。


如何設置讀寫分離?

  1. server

    {

  2.        listen      

    80

    ;

  3.        server_name  localhost

    ;

  4.        

    #charset koi8-r;

  5.        

    #access_log  logs/host.access.log  main;

  6.        location

    /

    {

  7.                proxy_pass http

    :

    //192.128.133.202;

  8.                

    if

    (

    $request_method

    =

    "PUT"

    ){

  9.                        proxy_pass http

    :

    //192.128.18.201;

  10.                

    }

  11.        

    }

  12. }


參考




  • Nginx能為前端開發帶來什麼?



  • 前端工程師應該知道的Nginx



  • 前端 Nginx https SSL proxy + 後端 Nginx http 應用的布署教程



  • nginx配置location總結及rewrite規則寫法



  • nginx伺服器安裝及配置文件詳解



  • http://freeloda.blog.51cto.com/2033581/1288553





●編號

475

,輸入編號直達本文



●輸入m獲取文章

目錄

推薦↓↓↓

 



Python編程


更多推薦

18個技術類微信公眾號


涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux學習 的精彩文章:

勁爆!髒話連篇,Linux之父:這些是TMD的垃圾!

TAG:Linux學習 |