nginx模塊–proxy,upstream,header,stream

ngx_http_proxy_module

    proxy模塊的作用:將請求傳遞給對應的服務器

    示例:

    location / {

        proxy_pass http://localhost:8080;

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

    }

    1.proxy_pass URL;

    blob.png

    location /uri/ {

        proxy_pass http://172.18.18.123/admin/;

    }

    如果proxy_pass后面帶了"/",則對應的uri則被替換為http://172.18.18.123/admin/

    如果proxy_pass后面沒有帶"/",則被替換為http://172.18.18.123/admin/uri

    如果location定義其uri時使用了正則表達式的模式,則proxy_pass之后必須不能使用uri

    用戶請求時傳遞的uri將直接附加代理到的服務之后

    location ~|~* /uri/ {

        proxy_pass http://172.18.18.123;

    }

    blob.png

    blob.png

    blob.png

    

    2.proxy_set_header field value;

    blob.png

    設定發往后端主機的請求報文的請求首部的值;默認設置了 Host $proxy_host 和 Connection close

    也可以自己指定,如果前端有反代服務器,而又想在日志中捕獲到源請求段的ip地址,那么就可以自行對首部進行設置proxy_set_header X-Real-IP(X-Forwarded-For) $remote_addr; 變量remote_addr里面存放的就是源請求端(真實客戶端)的ip地址

    blob.png

    blob.png

    blob.png


    3.proxy_cache_path

 blob.png

    定義可用于proxy功能的緩存;它的作用域只能是http


    4.proxy_cache zone|off;

    blob.png            

    指明要調用的緩存,或關閉緩存機制,此處的zone的值為proxy_cache_path中給定的keys_zone的值


    5.proxy_cache_key string;

    blob.png

    緩存中用于"鍵"的內容


    6.proxy_cache_valid [code…] time;

    blob.png

    定義對特定響應碼的相應內容的緩存時長;

    定義在http{…}中

    proxy_cache_path /var/cache/proxy_cache levels=1:1:1 keys_zone=cache:20m max_size=1g;

    定義在需要調用緩存功能的配置段,如server{…};

    proxy_cache cache;

    proxy_cache_key $request_uri;

    proxy_cache_valid 200 302 301 1h;

  proxy_cache_valid any 1m;

    blob.png

    blob.png

    blob.png

    

    7.proxy_cache_use_stale  

 blob.png

    如果后端服務器出現狀況,nginx是可以使用過期的響應緩存,這條指令用于定義何種情況下允許開啟此機制。

    updating參數允許nginx在正在更新緩存的情況下使用過期的緩存來作為響應,這樣做可以是更新緩存數據時,訪問源服務器的次數最少,在植入新的緩存條目時,如果想使訪問源服務器的次數最少,可以使用proxy_cache_lock指令

    


    8.proxy_cache_methods

    blob.png

    定義能夠使用代理緩存的方法,默認get和head方法


    9.proxy_hide_header

    blob.png

    默認nginx不會傳遞Date,Server,X-Pad,X-Accel參數給客戶端,也可以自定義不傳遞給客戶端的響應報文中的參數,如果想要傳遞,可以使用proxy_post_header


    10.proxy_connect_timeout

    blob.png

    定義一個與后端服務器連接超時時間,默認60s,但超時時間不能超過75s

    11.proxy_buffer_size 

    blob.png

    設置緩沖區大小為size,nginx從被代理的服務器讀取響應時,使用該緩沖區保存響應的開始部分,這部分通常包含一個小小的響應頭,該緩沖區大小默認等于proxy_buffers指令設置的一塊緩沖區大小,但他也可以被設置為更小


    12.proxy_buffering

    blob.png

    是否啟用緩沖功能


    13.proxy_buffers

    blob.png

    為每個連接設置緩沖區的數量為number,每塊緩沖區的大小為size,這些緩沖區 用于保存從被代理的服務器讀取的響應,每塊緩沖區默認等于一個內存頁的大小  


    14。proxy_busy_buffers_size

    blob.png

    當開啟緩沖響應的功能以后,在沒有全部讀到響應的情況下,寫緩沖到達一定大小時,nginx一定會向客戶端發送響應,直到緩沖小于此值,這條指令用于設置此值。同時,剩余的緩沖區可以用于接收響應,如果需要,一部分內容將緩沖到臨時文件,該大小默認是proxy_buffer_size和proxy_buffers指令設置單塊緩沖大小的兩倍


nginx_http_headers_module模塊

    向由代理服務器響應給客戶端的響應報文中添加自定義首部,或修改指定首部的值

    1.add_header 

    blob.png

    添加自定義首部

    add_header X-Via $server_addr  在響應報文首部中添加服務器端地址,可以是代理服務器   

    add_header X-Accel $server_name

    blob.png

    blob.png

    

    2.expires

    blob.png

    用于定義Expire或Cache-control首部的值


ngx_http_upstream_module

    該模塊用來定義一組服務器,在對應的proxy_pass,fastcgi_pass,uwsgi_pass,scgi_pass和meecached_pass被引用到   


    1.upstream 

    blob.png

    定義后端服務器組,會引入一個新的上下文

    它只能位于http中

    

    2.server

    blob.png

    在upstream上下文中server成員以及相關參數,Context:upstream

    address的表示格式:

        unix:/path/to/some_sock_file

        IP[:port]

        HOSTNAME[:port]

    

    parameters:

        weight=number 權重,默認為1

        max_fails=number 失敗嘗試最大次數,超出此值,server將被標記為不可用

        fail_timeout=time 定義服務器標記為不可用狀態的超時時長

        max_conns 當前的服務器的最大并發連接數

        backup 將服務器標記為備用,及所有服務器均不可用時,此服務器才啟用

        down 將服務標記為不可用

blob.png

blob.png

blob.png


    3.least_conn

    blob.png

    最少連接次數,當server擁有不同的權重時其為wlc;

    

    4.ip_hash

    blob.png

    源地址hash調度算法

    blob.png

    blob.png


    5.hash

    blob.png

    基于指定的key的hash表來實現對請求的調度,此處的key可以為直接文本,變量或二者的結合

    作用:將請求分類,同一類請求將發往同一個upstream server

     如:hash $request_uri consistent; 基于uri的hash,對于相同的uri,將發往同一個upstream server

         hash $remote_addr; 基于請求的源地址hash,對于相同的地址的請求,將發往同一個upstream server


    6.keepalive

    blob.png    

    為每個worker進程保留的空閑的長連接數量

    

    7.least_time header|last_byte;

    blob.png

    最短平均響應時長和最少連接

    header:response_header;

    last_byte:full_response;

    僅 Nginx Plus有效


    9.health_check

    blob.png

    定義對后端主機的健康狀態監測機制,只能用于location上下文

    可用參數:

        interval=time:監測頻率,默認每個5秒鐘

        fails=number:判斷服務器狀態轉為失敗需要檢測的次數

        passes=number:判斷服務其狀態轉為成功需要檢測的次數

        uri=uri:判斷其健康與否時使用的uri

        match=name:基于指定的match來衡量監測結果的成敗

        port=number:使用獨立的端口進行檢測

    僅Nginx Plus有效

    

    10.match

    blob.png

    定義衡量某檢測結果是否為成功的衡量機制

    專用指令:

        status:期望的響應碼

            status CODE

            status ! CODE

            …

        header:基于響應報文的首部進行判斷

            header HEADER=VALUE

            header HEADER ~ VALUE

            …

        body:基于響應報文的內容進行判斷

            body ~ "pattern"

            body !~ "pattern"

        僅Nginx Plus有效


ngx_stream_core_module

    模擬反代基于tcp或udp的服務連接,即工作于傳輸層的反代或調度器

    

    1.stream

    blob.png

    定義stream相關的服務,它位于main的上下文中

    stream {

        upstream group {

            server 172.18.18.123:80;

            server 172.18.18.124:80;

        }

        server {

            listen 10.1.0.1:2121

            proxy_pass group;

        }

    }

blob.png

blob.png

blob.png

    2.listen    

blob.png

    定義監聽的地址和端口

    listen 127.0.0.1:12345;

    listen *:12345;

    listen 12345; 同*:12345

    listen localhost:12345;

    listen unix:/var/run/nginx.sock;




原創文章,作者:Stupid_L,如若轉載,請注明出處:http://www.www58058.com/55311

(0)
Stupid_LStupid_L
上一篇 2016-10-29 16:23
下一篇 2016-10-29 16:51

相關推薦

  • 系統管理之磁盤管理(二)磁盤配額,RAID,LVM

    上篇博文給大家介紹了磁盤和文件系統的基礎知識,也是最基本的使用.在實際生產環境中,對于磁盤的使用,要求穩定,靈活,那么下面給大家分享下磁盤的高級用法.磁盤配額,RAID,LVM等相關知識. 1.磁盤配額2.磁盤RAID3.LVM 一.磁盤配額 1.概述: ? 在內核中執行 ? 以文件系統為單位啟用 ? 對不同組或者用戶的策略不同…

    Linux干貨 2016-09-05
  • 運維必備技能之磁盤管理

    磁盤分區的三個工具 1、fdisk交互式工具         fdisk /dev/sdb進入交互界面         交互式界面的幾個常用命令        …

    Linux干貨 2017-03-14
  • DNS原理詳解02

    9、子域授權     1、在父域的區域配置文件中增加以下記錄,即為增加了子域授權            opt.patrickli.com.         IN      NS     &…

    Linux干貨 2016-08-29
  • Recycled和Recycler的故事

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/156012      首先說明一下,這里不是英語課堂,本文也不是來辨析Recycled和Recycler這兩個單詞的含義。Recy…

    Linux干貨 2015-03-25
  • 第六周

      第6周   1 復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; cp /etc/rc.d/rc.sysinit ; sed -i 's@^[[:space:]]\+@#@g&#03…

    Linux干貨 2017-02-13
  • Linux三劍客awk命令

    1 .awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。 awk有3個不同版本: awk、nawk和gawk,未作特別說明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名稱得自…

    2017-09-08
欧美性久久久久