站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Nginx的正向代理與反向代理詳解

        正向代理和反向代理的概念

        代理服務(wù)(Proxy),通常也稱為正向代理服務(wù)。

        如果把局域網(wǎng)外Internet想象成一個(gè)巨大的資源庫,那么資源就分布到了Internet的各個(gè)點(diǎn)上,局域網(wǎng)內(nèi)的客戶端要訪問這個(gè)庫里的資源就必須統(tǒng)一通過代理服務(wù)器才能對各個(gè)站點(diǎn)進(jìn)行訪問。

        局域網(wǎng)內(nèi)的機(jī)器借助代理服務(wù)訪問局域網(wǎng)外的網(wǎng)站, 這主要是為了增加局域網(wǎng)內(nèi)部網(wǎng)絡(luò)的安全性,使得網(wǎng)外的威脅因素不容易影響到網(wǎng)內(nèi),這里代理服務(wù)器起到了一部分防火墻的功能。同時(shí),利用代理服務(wù)器也可以對局域網(wǎng)外的訪問進(jìn)行必要的監(jiān)控和管理。正向代理服務(wù)器不支持外部對內(nèi)部網(wǎng)絡(luò)的訪問請求。

        與正向代理服務(wù)相反,如果局域網(wǎng)向Internet提供資源,讓Internet上的其他用戶可以訪問局域網(wǎng)內(nèi)的資源,也可以設(shè)置一個(gè)代理服務(wù)器,它提供的服務(wù)就叫做反向代理(Reverse Proxy)服務(wù)??梢钥吹剑聪虼矸?wù)與代理服務(wù)在功能邏輯上剛好是相反的。

        正向代理服務(wù)器與反向代理服務(wù)器的概念很簡單,歸納起來就是,正向代理服務(wù)器用來讓局域網(wǎng)客戶機(jī)接入外網(wǎng)以訪問外網(wǎng)資源,反向代理服務(wù)器用來讓外網(wǎng)的客戶端接入局域網(wǎng)中的站點(diǎn)以訪問站點(diǎn)中的資源。理解這兩個(gè)概念的關(guān)鍵是要明白我們當(dāng)前的角色和目的是什么,在正向代理服務(wù)器中,我們的角色是客戶端,目的是要訪問外網(wǎng)的資源;在反向代理服務(wù)器中,我們的角色是站點(diǎn),目的是把站點(diǎn)的資源發(fā)布出去讓其他客戶端能夠訪問。

        知道了這兩個(gè)概念,就可以學(xué)習(xí)如何讓Nginx服務(wù)器來提供代理和反向代理服務(wù)器了。

        Nginx的正向代理服務(wù) 

        Nginx服務(wù)器正向代理服務(wù)的配置的3個(gè)指令

        在實(shí)際應(yīng)用中,使用Nginx服務(wù)器代理服務(wù)功能的情況相對少一些,Nginx代理服務(wù)本向也相對簡單,涉及的主要指令不多。這些指令原則上可以出現(xiàn)在Nginx配置文件的http塊、server塊或者location塊中,但一般是在搭建的Nginx服務(wù)器中單獨(dú)配置一個(gè)server塊用來設(shè)置代理服務(wù)。

        1.resolver指令

        該指令用于指定DNS服務(wù)器的IP地址。DNS服務(wù)器的主要工作是進(jìn)行域名的解析,將域名映射為對應(yīng)的IP地址。該指令的語法結(jié)構(gòu)為:

        resolver address ... [valid=time];

        address,DNS服務(wù)器的IP地址。如果不指定商品號,默認(rèn)使用53端口。

        time,設(shè)置數(shù)據(jù)包在網(wǎng)絡(luò)中的有效時(shí)間。出現(xiàn)該指令的主要原因是,在訪問站點(diǎn)時(shí),有很多情況使得數(shù)據(jù)包在一定時(shí)間內(nèi)不能被傳遞到目的地,但是又不能讓該數(shù)據(jù)包無期限地存在,于是就需要設(shè)定一段時(shí)間,當(dāng)數(shù)據(jù)包在這段時(shí)間內(nèi)沒有到達(dá)目的地,就會被丟棄,然后發(fā)送都會接收到一個(gè)消息,并決定是否要重發(fā)數(shù)據(jù)包。

        使用該指令的一個(gè)例子如下:

        resolver 127.0.0.1 [::1}:5353 valid=30s

        在實(shí)際應(yīng)用中,一般不需要設(shè)置這么復(fù)雜,只要將DNS服務(wù)器的IP地址設(shè)置給該指令即可。

        從Nginx1.1.7版本開始,該指令支持設(shè)置多個(gè)IP地址,從Nginx1.3.1開發(fā)版本和Nginx1.2.2穩(wěn)定版本開始,該指令支持設(shè)置IPV6地址。

        2.resolver_timeount指令

        resolver_timeount time;

        該指令用于設(shè)置DNS服務(wù)器域名解析超時(shí)時(shí)間,語法結(jié)果為:

        3.proxy_pass指令

        該指令用于設(shè)置代理服務(wù)器的協(xié)議和地址,它不僅僅用于Nginx服務(wù)器的代理服務(wù)器,更主要的是應(yīng)用于反向代理服務(wù),我們馬上就會談及。該指令的語法結(jié)構(gòu)為:

        proxy_pass URL;

        其中,URL即為設(shè)置的代理服務(wù)器協(xié)議和地址。

        在代理服務(wù)配置中,該指令的設(shè)置相對固定,因此在這里就不介紹其他細(xì)節(jié)了,具體內(nèi)容在學(xué)習(xí)Nginx服務(wù)器的反向代理服務(wù)時(shí)再重點(diǎn)闡述。在代理服務(wù)配置中,該指令配置為:

        proxy_pass http://$http_host$request_uri;

        其中,代理服務(wù)器協(xié)議設(shè)置為HTTP,$http_host和$request_uri兩個(gè)變量是Nginx配置支持的用于自動獲取主機(jī)和URI的變量。配置代理服務(wù)時(shí),一般不要改變該指令的配置。

         正向代理服務(wù)使用示例

        ..
        server
        {
           resolver 8.8.8.8;
           listen 82;
           location /
           {
               proxy_pass http://$http_host$request_uri;
           }
        }

        實(shí)現(xiàn)的片段很簡單,設(shè)置DNS服務(wù)器地址為8.8.8.8,使用默認(rèn)的53號端口作為DNS服務(wù)器的服務(wù)端口,代理服務(wù)的監(jiān)聽端口設(shè)置為82端口,Nginx服務(wù)器接收到的所有請求都由第5行的location塊進(jìn)行過濾處理。

        Nginx服務(wù)器代理服務(wù)使用的場合不多,從上一節(jié)的配置指令來看,功能也相對簡單。在使用過程中,有一些需要注意的事項(xiàng)在這里說明一下。

        首先,我們在上面提到過,設(shè)置Nginx服務(wù)器的代理服務(wù)器,一般是配置到一個(gè)server塊中,注意,在該server塊中,不要出現(xiàn) server_name指令,即不要設(shè)置虛擬主機(jī)的名稱或IP。而resolver指令是必需的,如果沒有該指令,Nginx服務(wù)器無法處理接收到的域名。

        其次,Nginx服務(wù)器的代理服務(wù)器不支持正向代理HTTPS站點(diǎn)。

        Nginx的反向代理服務(wù)

        Nginx服務(wù)器的反向代理服務(wù)是其最常用的重要功能之一,在實(shí)際工作中應(yīng)用廣泛,涉及的配置指令也比較多,各類指令完成的功能也不盡相同。下面按照功能分類向大家介紹配置該服務(wù)需要掌握的指令。由反向代理服務(wù)又可以衍生出多種與此相關(guān)的Nginx服務(wù)器的重要功能,隨后將逐步梳理這些功能,并提供配置實(shí)例供大家參考。

        Nginx服務(wù)器提供的反向代理服務(wù)也是比較高效的。它能夠同時(shí)接收的客戶端連接由worker_processes指令和worker_connections指令決定,計(jì)算方法為:worker_processes * worker_connections / 4.

        配置Nginx服務(wù)器反向代理用到的指令如果沒有特別說明,原則上可以出現(xiàn)在Nginx配置文件的http塊、server塊或者location塊中,但同正向代理服務(wù)的設(shè)置一樣,一般是在搭建的Nginx服務(wù)器中單獨(dú)配置一個(gè)server塊來設(shè)置反射代理服務(wù)。這些指令主要由ngx_http_proxy_module模塊進(jìn)行解析和處理。該模塊是Nginx服務(wù)器的標(biāo)準(zhǔn)HTTP模塊。

        反向代理的基本設(shè)置的27個(gè)指令

        學(xué)習(xí)Nginx服務(wù)器的反向代理 服務(wù),要涉及與后端代理服務(wù)器相關(guān)的配置,是客戶端提供正常Web服務(wù)的基礎(chǔ),大家應(yīng)該熟練掌握,尤其是proxy_pass指令,在實(shí)際應(yīng)用過程中需要注意一些配置細(xì)節(jié),需要小心使用。

        1.proxy_pass指令

            該指令用來設(shè)置被代理服務(wù)器的地址,可以是主機(jī)名稱、IP地址加端口號等形式。其語法結(jié)構(gòu)為:

        proxy_pass URL;

           其中,URL為要設(shè)置的被代理服務(wù)器的地址,包含傳輸協(xié)議、主機(jī)名稱或IP地址加商品號、URI等要素。傳輸協(xié)議通常是“http”或者“https”。指令同時(shí)還接受以“unix”開始的UNIX-domain套接字路徑。例如:

        proxy_pass http://www.myweb.name/uri;
        proxy_pass http://localhost/uri;
        proxy_pass http://unix:/tmp/backend.socket:/uri/;

         如果被代理服務(wù)器是一組服務(wù)器的話,可以使用upstream指令配置后端服務(wù)器組。例如:

        #多個(gè)服務(wù)器
        ...
        upstream proxy_svrs                  #配置后端服務(wù)器
        {
           server http://192.168.1.1:8001/uri/;
           server http://192.168.1.2:8001/uri/;
           server http://192.168.1.3:8001/uri/;
        }
         
        server
        {
           ...
           listen 80;
           server_name www.myweb.name;
           location /
           {
               proxy_pass proxy_svrs;      #使用服務(wù)器組名稱
           }
        }

              這里首先需要提醒大家proxy_pass指令在使用服務(wù)器組名稱時(shí)應(yīng)該注意一個(gè)細(xì)節(jié)。在上例中,在組內(nèi)的各個(gè)服務(wù)器中都指明了傳輸協(xié)議“http://”,而在proxy_pass指令中就不需要指明了。如果 現(xiàn)在將upstream指令的配置改為:

        #不指明http
        ...
        upstream proxy_svrs                  #配置后端服務(wù)器
        {
           server 192.168.1.1:8001/uri/;
           server 192.168.1.2:8001/uri/;
           server 192.168.1.3:8001/uri/;
        }

            我們就需要在proxy_pass指令中指明傳輸協(xié)議“http://”;

        proxy_pass http://proxy_svrs;

        在使用該指令的過程中還需要注意,URL中是否包含有URI,Nginx服務(wù)器的處理方式是不同的。如果URL中不包含URI,Nginx服務(wù)器不會改變原地址的URI;但是如果包含了URI,Nginx服務(wù)器將會使用新的URI替代原來的URI。我們舉例來說明。

        請看下面的Nginx配置片段:

        ..
        server
        {
           ...
           server_name www.myweb.name;
           resolver 8.8.8.8;
           listen 82;
           location /server/
           {
               ...
               proxy_pass http://192.168.1.1;
           }
        }

            如果客戶端使用“http://www.myweb.name/server ”發(fā)起請求,該請求被配置中顯示的location塊進(jìn)行處理,由于proxy_pass指令變量不含有URI,所以轉(zhuǎn)向的地址為“http:///192.168.1.1/server ”;我們再來看下面的Nginx片段:

        ..
        server
        {
           ...
           server_name www.myweb.name;
           resolver 8.8.8.8;
           listen 82;
           location /server/
           {
               ...
               proxy_pass http://192.168.1.1/loc;
           }
        }

        在該配置實(shí)例中,proxy_pass指令的URI包含了URI“/loc”;如果客戶端仍然使用“http://www.myweb.name/server ”發(fā)起請求,Nginx服務(wù)器將會把地址轉(zhuǎn)向“http://192.168.1.1/loc/ ”;

            通過上面的實(shí)例,我們可以總結(jié) 出,在使用proxy_pass指令時(shí),如果不想改變原地址中的URI,就不要在URL變量中配置URI。

            明白了上面這兩個(gè)例子的用法,我們來解釋大家經(jīng)常討論的一個(gè)問題,就是proxy_pass指令的URL變量末尾是否加斜杠“/”的問題。

            請看這兩個(gè)配置示例:

        #配置1 proxy_pass http://192.168.1.1;
        #配置2 proxy_pass http://192.168.1.1/;

        配置1和配置2的區(qū)別在于,配置2中的proxy_pass指令的URL變量末尾添加了斜杠“/”,這意味著配置2中的proxy_pass指令的URL變量包含了URI“/”,而配置1中的proxy_pass指令的URL變量不包含URI。理解了這一點(diǎn),我們就可以解釋下面的實(shí)例和現(xiàn)象了。大家注意各例子之間的對比。

            實(shí)例1:

        ..
        server
        {
           ...
           listen 80;
           server_name www.myweb.name;         #注意location的uri變量
           location /
           {
               ...
               #配置1 proxy_pass http://192.168.1.1;
               #配置2 proxy_pass http://192.168.1.1/;
           }
        }

          在該配置中,location塊使用“/”作為uri變量的值來匹配不包含URI的請求URL。由于請求URL中不包含URL,因此配置1和配置2的效果是一樣的。比如客戶端的請求URL為“http://www.myweb.name/index.htm”,其將會被實(shí)例1中的location塊匹配成功并進(jìn)行處理。不管使用配置1不是配置2,轉(zhuǎn)向的URL都為:“http://192.168.1.1/index.htm”。

        實(shí)例2:

        ..
        server
        {
           ...
           listen 80;
           server_name www.myweb.name;         #注意location的uri變量
           location /server/
           {
               ...
               #配置1 proxy_pass http://192.168.1.1;
               #配置2 proxy_pass http://192.168.1.1/;
           }
        }

        在該配置中,location塊使用“/server/”作為uri變量的值來匹配包含的URI“/server/”的請求URL。這時(shí),使用配置1和配置2的轉(zhuǎn)向結(jié)果就不相同了。使用配置1和配置2的轉(zhuǎn)向效果就不相同了。使用配置1時(shí)候,proxy_pass指令中的URL變量不包含URI,Nginx服務(wù)器將不改變原地址的URI,使用配置2的時(shí)候,proxy_pass指令中的URL變量包含URI“/”,Nginx服務(wù)器會將原地址的URI替換為”/”。

        比如客戶端的請求URI為“http://www.myweb.name/server/index.htm”將會被實(shí)例2的location塊匹配成功并進(jìn)行處理。使用配置1的時(shí)候,轉(zhuǎn)向的URL為“http://192.168.1.1/server/index.htm”,原地址的URI“、server/”示被改變;使用配置2時(shí),轉(zhuǎn)向的URL為“http://192.168.1.1/index.htm”,可以看到原地址的URI“/server/”被替換為“/”。

        大家在應(yīng)用過程中,一定要注意到該指令在配置上的細(xì)節(jié)問題,分清楚URL和URI的區(qū)別與聯(lián)系,并能夠正確使用它們配置出符合需求的Nginx服務(wù)器。

        2.proxy_hide_header指令

         該指令用于設(shè)置Nginx服務(wù)器在發(fā)送HTTP響應(yīng)時(shí),隱藏一些頭域信息。其語法結(jié)構(gòu)為:

        proxy_hide_header field;

        其中,field為需要隱藏的頭域。該指令可以在http塊、server塊或者location塊中進(jìn)行配置。

        3.proxy_pass_header指令

        默認(rèn)情況下,Nginx服務(wù)器在發(fā)送響應(yīng)報(bào)文時(shí),報(bào)文頭中不包含“Date”、“Server”、“X-Accel”等來自被代理服務(wù)器的頭域信息。該指令可以設(shè)置這些頭域信息以被發(fā)送,其語法結(jié)構(gòu)為:

        proxy_pass_header field;

        4.proxy_pass_request_body指令

        該指令用于配置是否將客戶端請求的請求體發(fā)送給代理服務(wù)器,其語法結(jié)構(gòu)為:

        proxy_pass_request_body on | off;

        默認(rèn)開啟(on),開頭可以在http塊、server塊或者location塊中進(jìn)行配置。

        5.proxy_pass_request_headers指令

        該指令用于配置是否將客戶端請求的請求頭發(fā)送給代理服務(wù)器,其語法結(jié)構(gòu)為:

        proxy_pass_request_headers  on | off;

        默認(rèn)開啟(on),開頭可以在http塊、server塊或者location塊中進(jìn)行配置。

        6.proxy_set_header指令

        該指令可以理發(fā)Nginx服務(wù)器接收到的客戶端請求的請求頭信息,然后將新的請求頭發(fā)送給被代理的服務(wù)器,其語法結(jié)構(gòu)為:

        proxy_set_header field value;

        field,要更新的信息所在的區(qū)域;value,更改的值,支持使用文本、變量或者變量的組合。

        默認(rèn)情況下,該指令的設(shè)置為:

        proxy_set_header Host $proxy_host;
        proxy_set_header Connection close;

         請看一些設(shè)置實(shí)例:

        proxy_set_header Host $http_host;           #將目前Host頭域的值填充成客戶端的地址
        proxy_set_header Host $$host;               #將當(dāng)前l(fā)ocation塊的server_name指令填充到Host頭域
        proxy_set_header Host $$host:$proxy_port;   #listener指令值一起填充到Host頭域.

        7.proxy_set_body指令

        指該指令可以更改Nginx服務(wù)器接收到的客戶端請求的請求信息,然后將新的請求體發(fā)送給被代理的服務(wù)器。其語法結(jié)構(gòu)為:

        proxy_set_body_value;

          其中,value為更改的信息,支持使用文本、變量或者變量的組合。

        8.proxy_bind指令

        官方文檔中對該指令的解釋是,強(qiáng)制將與代理主機(jī)的連接綁定到指定的IP地址。通俗來講就是,在配置多個(gè)基于名稱或者基于IP地址。通俗來講就是,在配置了多個(gè)基于名稱或者基于IP主機(jī)的情況下,如果我們希望代理連接由指定的主機(jī)處理,就可以使用該指令進(jìn)行配置,其語法結(jié)構(gòu)為:

        proxy_bind adress;

          其中,adress為指定主機(jī)的IP地址。 

        9.proxy_connect_timeout指令

        該指令配置Nginx服務(wù)器與后端被代理服務(wù)器嘗試建立連接的超時(shí)時(shí)間,其語法結(jié)構(gòu)為:

        proxy_connect_timeout time;

        其中,time為設(shè)置的超時(shí)時(shí)間,默認(rèn)60s。

        10.proxy_read_timeout指令

        該指令配置Nginx服務(wù)器向后端被代理服務(wù)器(組)發(fā)出的read請求后,等待響應(yīng)的超時(shí)時(shí)間,其語法結(jié)構(gòu)為:

        proxy_read_timeout time;

        其中,time為設(shè)置的超時(shí)時(shí)間,默認(rèn)60s。

        11.proxy_send_timeout指令

        該指令配置Nginx服務(wù)器向后端被代理服務(wù)器(組)發(fā)出的write請求后,等待響應(yīng)的超時(shí)時(shí)間,其語法結(jié)構(gòu)為:

        proxy_write_timeount time

        其中,time為設(shè)置的超時(shí)時(shí)間,默認(rèn)60s。

        12.proxy_http_version指令

        該指令設(shè)置用于Nginx服務(wù)器提供代理服務(wù)的HTTP協(xié)議版本,其語法結(jié)構(gòu)為:

        proxy_http_version 1.0 |  1.1;

        默認(rèn)版本為1.0版本,1.1版本支持upstream服務(wù)器組設(shè)置的keepalive指令。

        13.proxy_method指令

        該指令用于設(shè)置Nginx服務(wù)器請求被代理服務(wù)器時(shí)使用的請求方法,一般為POST或者GET。設(shè)置了該指令,客戶端的請求方法將被忽略。其語法結(jié)構(gòu)為:

        proxy_method method;

        其中,method的值可以設(shè)置為POST或者GET,注意不加引號。

        14.proxy_ignore_client_abort指令

        該指令用過設(shè)置在客戶端中斷網(wǎng)絡(luò)請求時(shí),Nginx服務(wù)器是否中斷對被代理服務(wù)器的請求,其語法結(jié)構(gòu)為:

        proxy_ignore_client_abort on | off

        默認(rèn)設(shè)置為off,當(dāng)客戶端中斷網(wǎng)絡(luò)請求時(shí),Nginx服務(wù)器中斷對被代理服務(wù)器的請求。

        15.proxy_ignore_header指令

        該指令用于設(shè)置一些HTTP響應(yīng)頭的頭域,Nginx服務(wù)器接收到被代理服務(wù)器的響應(yīng)數(shù)據(jù)后,不會處理被設(shè)置的頭域。其語法結(jié)構(gòu)為:

        proxy_ignore_header field ...;

        其中,field為要設(shè)置的HTTP響應(yīng)頭的頭域,例如“X-Accel-Redirect”、“X-Accel-Expires”、“Cache-Control”、“Expires”或“Set-Cookie”等。

        16.proxy_redirect指令

        該指令用于修改被代理服務(wù)器返回的響應(yīng)頭中的Location頭域和“Refresh”頭域,與proxy_pass指令配合使用。比如,Nginx服務(wù)器通過proxy_pass指令將客戶端的請求地址重寫為被代理服務(wù)器的地址,那么Nginx服務(wù)器返回客戶端的響應(yīng)頭中“Location”頭域顯示的地址就應(yīng)該和客戶端發(fā)起請求的地址相對應(yīng),而不是代理服務(wù)器直接返回的地址信息,否則就會出問題。該指令解決了這個(gè)問題,可以把代理服務(wù)器返回的地址信息更改為需要的地址信息。其語法結(jié)構(gòu)為:

        proxy_redirect redirect replacement
        proxy_redirect default;
        proxy_redirect off;

        redirect,匹配“Location”頭域值的字符串,支持變量的使用和正則表達(dá)式。

        replacement,用于替換redirect變量內(nèi)容的字符串,支持變量的使用。

        該指令的用法我們通過幾個(gè)配置實(shí)例來解釋。

        對于第1個(gè)結(jié)構(gòu),假設(shè)被代理服務(wù)器返回的響應(yīng)頭中的“Location”頭域?yàn)椋?/p>

        Location: http://localhost:8081/proxy/some/uri

        該指令設(shè)置為:

        proxy_redirect http://localhost:8081/proxy/ http://myweb/fronted/;

        Nginx服務(wù)器會將“Location”頭域信息更改為:

        Location:http://myweb/frontend//some/uri;

        這樣,客戶端收到的響應(yīng)信息頭部中的“Location”頭域就被更改了。

        結(jié)構(gòu) 2使用default,代表使用location塊的uri變量作為replacement,并使用proxy_pass變量作為redirect。請看下面兩段配置,它們的配置效果是等同的。

        #配置1
        location /server/
        {
           proxy_pass http://proxyserver/source/;
           proxy_redirect default;
         
        }
         
        #配置2
        location /server/
        {
           proxy_pass http//proxyserver/source/;
           proxy_redirect http://proxyserver/source/ /server/;
         
        }

        使用結(jié)構(gòu)3可以將當(dāng)前作用域下所有的proxy_redirect指令全部設(shè)置為無效。

        17.proxy_intercept_errors指令

        該指令用于配置一個(gè)狀態(tài)是否開啟還是關(guān)閉。在開啟狀態(tài)時(shí),如果被代理的服務(wù)器返回的HTTP狀態(tài)碼為400或者大于400,則Nginx服務(wù)器使用自己定義的錯(cuò)誤頁(使用error_page指令);如果是關(guān)閉狀態(tài),Nginx服務(wù)器直接將被代理服務(wù)器返回的HTTP狀態(tài)返回給客戶端。其請求結(jié)構(gòu)為

        proxy_intercept_errors on | off

        18.proxy_headers_hash_max_size指令

        該指令用于配置HTTP報(bào)文頭哈希表的容量,其語法結(jié)構(gòu)為:

        proxy_headers_hash_max_size size;

        其中,size為HTTP報(bào)文頭哈希表的容量上限,默認(rèn)為512個(gè)字符,即:

        proxy_headers_hash_max_size 512;

        Nginx服務(wù)器為了能夠快速檢索HTTP報(bào)文頭中的各項(xiàng)信息,比如服務(wù)器名稱、MIME類型、請求頭名等,使用哈希表存儲這些信息。Nginx服務(wù)器在申請存放HTTP報(bào)文頭的空間時(shí),通常以固定大小為單位申請,該大小由proxy_headers_hash_bucket_size指令配置。

        在Nignx配置中,不僅能夠配置整個(gè)哈希表的大小上限,對大部分內(nèi)容項(xiàng),也可以配置其大小上限,比如server_names_hash_max_size指令和server_names_hash_bucket_size指令用來設(shè)置服務(wù)器名稱的字符數(shù)長度。

        19.proxy_headers_hash_bucket_size指令

        該指令用于設(shè)置Nginx服務(wù)器申請存放HTTP報(bào)文頭的哈希表容量的單位大小。該指令的具體作用在上面proxy_headers_bucket_size指令的使用中已經(jīng)說明。其語法結(jié)構(gòu)為:

        proxy_headers_hash_bucket_size size;

        20.proxy_next_upstream指令

        在配置Nginx服務(wù)器反向代理功能時(shí),如果使用upstream指令配置了一組服務(wù)器作為代理 服務(wù)器,服務(wù)器組中各服務(wù)器的訪問規(guī)則遵循upstream指令配置的輪詢規(guī)則 ,同時(shí)可以使用該指令配置在發(fā)生哪些異常情況時(shí),將請求順次交由下一個(gè)組內(nèi)服務(wù)器處理。該指令的語法結(jié)構(gòu)為:

        proxy_next_upstream status ...;

        其中,status為設(shè)置的服務(wù)器返回狀態(tài),可以是一個(gè)或者多個(gè)。這些狀態(tài)包括:

        error,建立連接、向被代理服務(wù)器發(fā)送請求或者讀取響應(yīng)頭時(shí)服務(wù)器發(fā)生連接錯(cuò)誤。

        timeout,建立連接、向被代理服務(wù)器發(fā)送請求或者讀取響應(yīng)頭時(shí)服務(wù)器發(fā)生連接超時(shí)。

        invalid_header,被代理的服務(wù)器返回的響應(yīng)頭為空或者無效。

        http_500|http_502|http_503|http_504|http_404,被代理的服務(wù)器返回500、502、503、504或者404狀態(tài)代碼。

        off,無法將請求發(fā)送給被代理的服務(wù)器。

        注意

        與被代理的服務(wù)器進(jìn)行數(shù)據(jù)傳輸?shù)倪^程中發(fā)送錯(cuò)誤的請求,不包含在該指令支持的狀態(tài)之內(nèi)。

        21.proxy_ssl_session_reuse指令

        該指令用于配置是否使用基于SSL安全協(xié)議的會話連接(“https://”)被代理的服務(wù)器,其語法結(jié)構(gòu)為:

        proxy_ssl_session_reuse on | off 

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 一级香蕉精品视频在线播放| 91大神精品全国在线观看| 国产精品熟女一区二区| 国产精品无码DVD在线观看| 国自产偷精品不卡在线| 欧美在线精品一区二区三区| 四虎成人精品免费影院| 国产色婷婷五月精品综合在线 | 亚洲精品专区| 国产精品成人小电影在线观看| 99久久精品国产免看国产一区| 亚洲av日韩精品久久久久久a| 久久久久这里只有精品| 6080亚洲精品午夜福利| 国产精品你懂得| 97精品国产一区二区三区| 人妻少妇精品中文字幕AV| 中文字幕亚洲精品无码| 欧美ppypp精品一区二区| 国产精品主播一区二区| 99久久精品费精品国产 | 中文字幕精品无码一区二区三区| 国产中文在线亚洲精品官网| 国产精品狼人久久久久影院| 日本精品卡一卡2卡3卡四卡| 久久精品九九亚洲精品天堂| 久久国产乱子精品免费女| 91麻豆精品国产| 99精品免费视频| 欧美精品免费线视频观看视频| 精品免费tv久久久久久久| 国产午夜精品理论片久久影视| 国产成人精品久久二区二区| 国产精品无码无需播放器| 精品国产乱码久久久久久郑州公司| 亚洲中文久久精品无码ww16| 亚洲日韩精品无码一区二区三区 | 日韩精品国产自在欧美| 欧美激情精品久久久久久久| 四虎永久在线精品国产馆V视影院| 欧美日韩专区麻豆精品在线|