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
下一篇 2016-10-29

相關推薦

  • ?Linux基礎知識之screen命令詳解

    該博文以CentOS6.8_x86_64系統為基礎,Xshell5遠程登錄CentOS6.8系統,以root身份登錄系統,以Xshell5發起screen幫助,用系統命令行界面去連接。 screen命令:         打開新的screen: screen -S [SESSION]   (打開一個名叫hel…

    Linux干貨 2016-07-29
  • LVS-dr模型

    網絡拓撲圖 需三臺主機 要在主機rs上做系統內核的限制 vs主機上配置vip和在rs主機上在lo環配置vip 那個先開始都行 rs主機上在lo環配置vip必須要晚于于在rs主機做內核的限制 在VS主機上配置VIP #ifconfig ens33:0 172.18.0.33 network 255.255.255.2550 broadcast 172.18.0…

    Linux干貨 2017-05-17
  • Linux用戶、組和權限管理

    知識框架圖 學習筆記 用戶和組 UID root:0 系統用戶:1-499、1-999 普通用戶:500+、1000+ GID 管理員組:0 系統組:1-499、1-999 普通組:500+、1000+ 安全上下文 進程:運行中的程序 進程所能訪問資源的權限取決于進程運行用戶本身 組的類別 主要組 用戶有且只能有一個主要組 組名=用戶名,組中只能有一個用戶 …

    2018-03-17
  • N26-博客作業-week11

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 加密過程 1、先用單向加密算法計算出數據的特征碼 2、私鑰加密特征碼,并將結果附加在數據之后 3、生成一個臨時的對稱密鑰,并使用對稱密鑰加密整段數據 4、獲取對方的公鑰,使用該公鑰加密之前生成的臨時對稱密鑰,并附加在數據之后 5、將所有數據發送給對方解密過程 1、先使用私鑰解密加密的對稱密鑰 2、用對稱密鑰解密…

    2017-04-18
  • 文本處理課后小練習

    1、找出ifconfig命令結果中本機的所有IPv4地址 [root@wzc date]# ifconfig |grep -E -o  '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]…

    Linux干貨 2016-08-08
  • N28-第二周博客作業

    常用通配符
    *:表示任意長度的任意字符;

    ?:表示任意的單個字符;

    []:表示在指定范圍內的單個字符:[a-z];

    [^]:脫字符,是取反的意思,即在指定范圍以外的任意字符,如 [^0-9]表示除數字以外的一切字符。

    [:digit:] 表示所有的數字,相當于0-9

    [:lower:] 表示所有的小寫字母

    [:upper:] 表示所有的大寫字母

    [:alpha:] 表示所有的字母,

    [:alnum:] 相當于[0-9a-z]

    [:space:] 相當于空白字符

    [:punct:] 表示所有的標點符號

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。

    2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。

    3、請使用命令行展開功能來完成以下練習:

    (1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d

    (2)、創建/tmp/mylinux目錄下的:
    mylinux/
    ├── bin
    ├── boot
    │?? └── grub
    ├── dev
    ├── etc
    │?? ├── rc.d
    │?? │?? └── init.d
    │?? └── sysconfig
    │?? └── network-scripts
    ├── lib
    │?? └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │?? └── local
    │?? ├── bin
    │?? └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

    5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?

    6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。

    7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。

    8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。

    9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

    10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

    11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。

    12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干貨 2017-12-11
欧美性久久久久