欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port區(qū)別解析

 更新時(shí)間:2024年03月14日 11:49:57   作者:明算科  
nginx為了實(shí)現(xiàn)反向代理的需求而增加了一個(gè)ngx_http_proxy_module模塊,其中proxy_set_header指令就是該模塊需要讀取的配置文件,這篇文章主要介紹了nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port區(qū)別,需要的朋友可以參考下

nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port區(qū)別

1.proxy_set_header設(shè)置的請(qǐng)求頭是傳遞給后端服務(wù)器的

ngixn反向代理中proxy_set_header的設(shè)置:

 proxy_set_header       Host $http_host;
 proxy_set_header       X-Real-IP $remote_addr;
 proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header        X-Forwarded-Proto  $scheme;
 proxy_set_header        X-Forwarded-Uri  $request_uri;

解析:
1)$http_host:代理服務(wù)器本機(jī)IP。
2)$remote_addr:前一節(jié)點(diǎn)的IP,并不一定是用戶(hù)的真實(shí)IP。
$proxy_host:代理服務(wù)器請(qǐng)求的host,即后端服務(wù)器/源站的IP,后端服務(wù)器有可能還是代理服務(wù)器。
$proxy_port:代理服務(wù)器請(qǐng)求的后端服務(wù)器的端口。
3)$http_x_real_ip:獲取的是前一節(jié)點(diǎn)的X-Real-IP的值。
4)$proxy_add_x_forwarded_for:獲取的是前一節(jié)點(diǎn)的X-Forwarded-For的值。

3. X-Forwarded-For 對(duì)應(yīng)不同值:
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
當(dāng)只有一層代理服務(wù)器的情況下,兩者的X-Forwarded-For值?致,都是應(yīng)用的真實(shí)IP。

區(qū)別
$remote_addr是前一節(jié)點(diǎn)的IP,并不一定是用戶(hù)的真實(shí)IP。
$proxy_add_x_forwarded_for變量包含$http_x_forwarded_for與$remote_addr兩部分,他們之間用逗號(hào)分開(kāi)。

$proxy_port和$server_port區(qū)別:
$host:$proxy_port:Nginx監(jiān)聽(tīng)的端口
$host:$server_port:服務(wù)真正訪(fǎng)問(wèn)的端口

補(bǔ)充:

nginx中proxy_set_header Host $host的作用及$proxy_host,$host與$http_host的區(qū)別

一、nginx中proxy_set_header Host $host的作用

  nginx為了實(shí)現(xiàn)反向代理的需求而增加了一個(gè)ngx_http_proxy_module模塊。其中proxy_set_header指令就是該模塊需要讀取的配置文件。在這里,所有設(shè)置的值的含義和http請(qǐng)求體中的含義完全相同,除了Host外還有X-Forward-For。

  Host的含義是表明請(qǐng)求的主機(jī)名,因?yàn)閚ginx作為反向代理使用,而如果后端真實(shí)服務(wù)器設(shè)置有類(lèi)似防盜鏈或者根據(jù)http請(qǐng)求頭中的host字段來(lái)進(jìn)行路由或判斷功能的話(huà),如果反向代理層的nginx不重寫(xiě)請(qǐng)求頭中的host字段,將會(huì)導(dǎo)致請(qǐng)求失敗【默認(rèn)反向代理服務(wù)器會(huì)向后端真實(shí)服務(wù)器發(fā)送請(qǐng)求,并且請(qǐng)求頭中的host字段應(yīng)為proxy_pass指令設(shè)置的服務(wù)器】

  同理,X_Forward_For字段表示該條http請(qǐng)求是由誰(shuí)發(fā)起的?如果反向代理服務(wù)器不重寫(xiě)該請(qǐng)求頭的話(huà),那么后端真實(shí)服務(wù)器在處理時(shí)會(huì)認(rèn)為所有的請(qǐng)求都來(lái)在反向代理服務(wù)器,如果后端有防攻擊策略的話(huà),那么機(jī)器就被封掉了。因此,在配置用作反向代理的nginx中一般會(huì)增加兩條配置,修改http的請(qǐng)求頭。

proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;

  這里的$http_host和$remote_addr都是nginx的導(dǎo)出變量,可以在配置文件中直接使用。如果Host請(qǐng)求頭部沒(méi)有出現(xiàn)在請(qǐng)求頭中,則$http_host值為空,但是$host值為主域名。因此,一般而言,會(huì)用$host代替$http_host變量,從而避免http請(qǐng)求中丟失Host頭部的情況下Host不被重寫(xiě)的失誤。

  X-Forwarded-For:簡(jiǎn)稱(chēng)XFF頭,它代表客戶(hù)端,也就是HTTP的請(qǐng)求端真實(shí)的IP,只有在通過(guò)了HTTP 代理或者負(fù)載均衡服務(wù)器時(shí)才會(huì)添加該項(xiàng)。 它不是RFC中定義的標(biāo)準(zhǔn)請(qǐng)求頭信息,在squid緩存代理服務(wù)器開(kāi)發(fā)文檔中可以找到該項(xiàng)的詳細(xì)介紹。標(biāo)準(zhǔn)格式如下:X-Forwarded-For: client1, proxy1, proxy2。

  這一HTTP頭一般格式如下:X-Forwarded-For: client1, proxy1, proxy2。其中的值通過(guò)一個(gè)“逗號(hào)+空格”把多個(gè)IP地址區(qū)分開(kāi), 最左邊(client1)是最原始客戶(hù)端的IP地址, 代理服務(wù)器每成功收到一個(gè)請(qǐng)求,就把請(qǐng)求來(lái)源IP地址添加到右邊。

  在上面這個(gè)例子中,這個(gè)請(qǐng)求成功通過(guò)了三臺(tái)代理服務(wù)器:proxy1, proxy2 及 proxy3。請(qǐng)求由client1發(fā)出,到達(dá)了proxy3(proxy3可能是請(qǐng)求的終點(diǎn))。請(qǐng)求剛從client1中發(fā)出時(shí),XFF是空的,請(qǐng)求被發(fā)往proxy1;通過(guò)proxy1的時(shí)候,client1被添加到XFF中,之后請(qǐng)求被發(fā)往proxy2;通過(guò)proxy2的時(shí)候,proxy1被添加到XFF中,之后請(qǐng)求被發(fā)往proxy3;通過(guò)proxy3時(shí),proxy2被添加到XFF中,之后請(qǐng)求的的去向不明,如果proxy3不是請(qǐng)求終點(diǎn),請(qǐng)求會(huì)被繼續(xù)轉(zhuǎn)發(fā)。

鑒于偽造這一字段非常容易,應(yīng)該謹(jǐn)慎使用X-Forwarded-For字段。正常情況下XFF中最后一個(gè)IP地址是最后一個(gè)代理服務(wù)器的IP地址, 這通常是一個(gè)比較可靠的信息來(lái)源。

二、proxy_set_header設(shè)置Host為$proxy_host,$host與$local_host的區(qū)別

  先來(lái)看下proxy_set_header的語(yǔ)法:proxy_set_header field value;

  默認(rèn)值:

proxy_set_header Host $proxy_host;
proxy_set_header Connection close;

  上下文:httpserverlocation

  作用:允許重新定義或者添加發(fā)往后端服務(wù)器的請(qǐng)求頭。value可以包含文本、變量或者它們的組合。 當(dāng)且僅當(dāng)當(dāng)前配置級(jí)別中沒(méi)有定義proxy_set_header指令時(shí),會(huì)從上面的級(jí)別繼承配置。 默認(rèn)情況下,只有兩個(gè)請(qǐng)求頭會(huì)被重新定義:

proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;

  nginx對(duì)于upstream默認(rèn)使用的是基于IP的轉(zhuǎn)發(fā),因此對(duì)于以下配置:

upstream backend {  
        server 127.0.0.1:8080;  
    }  
    upstream crmtest {  
        server crmtest.aty.sohuno.com;  
    }  
    server {  
            listen       80;  
            server_name  chuan.aty.sohuno.com;  
            proxy_set_header Host $http_host;  
            proxy_set_header x-forwarded-for  $remote_addr;  
            proxy_buffer_size         64k;  
            proxy_buffers             32 64k;  
            charset utf-8;  
            access_log  logs/host.access.log  main;  
            location = /50x.html {  
                root   html;  
            }  
        location / {  
            proxy_pass backend ;  
        }  
        location = /customer/straightcustomer/download {  
            proxy_pass http://crmtest;  
            proxy_set_header Host $proxy_host;  
        }  
    }

  當(dāng)匹配到 /customer/straightcustomer/download時(shí),使用crmtest處理,到upstream就匹配到crmtest.aty.sohuno.com,這里直接轉(zhuǎn)換成IP進(jìn)行轉(zhuǎn)發(fā)了。假如crmtest.aty.sohuno.com是在另一臺(tái)nginx下配置的,ip為10.22.10.116,則$proxy_host則對(duì)應(yīng)為10.22.10.116。此時(shí)相當(dāng)于設(shè)置了Host為10.22.10.116。

// 如果想讓Host是crmtest.aty.sohuno.com,則進(jìn)行如下設(shè)置:
proxy_set_header Host crmtest.aty.sohuno.com;
// 如果不想改變請(qǐng)求頭“Host”的值,可以這樣來(lái)設(shè)置:
proxy_set_header Host $http_host;
// 但是,如果客戶(hù)端請(qǐng)求頭中沒(méi)有攜帶這個(gè)頭部,那么傳遞到后端服務(wù)器的請(qǐng)求也不含這個(gè)頭部。 
// 這種情況下,更好的方式是使用$host變量——它的值在請(qǐng)求包含“Host”請(qǐng)求頭時(shí)為“Host”字段的值,在請(qǐng)求未攜帶“Host”請(qǐng)求頭時(shí)為虛擬主機(jī)的主域名:
proxy_set_header Host       $host;
// 此外,服務(wù)器名可以和后端服務(wù)器的端口一起傳送:
proxy_set_header Host $host:$proxy_port;
// 如果某個(gè)請(qǐng)求頭的值為空,那么這個(gè)請(qǐng)求頭將不會(huì)傳送給后端服務(wù)器:
proxy_set_header Accept-Encoding "";

到此這篇關(guān)于nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port區(qū)別的文章就介紹到這了,更多相關(guān)nginx配置$http_host、$host、$host:$proxy_port和$host:$server_port內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx+Windows搭建域名訪(fǎng)問(wèn)環(huán)境的操作方法

    Nginx+Windows搭建域名訪(fǎng)問(wèn)環(huán)境的操作方法

    這篇文章主要介紹了Nginx搭建域名訪(fǎng)問(wèn)環(huán)境,包括nginx配置文件的相關(guān)介紹及對(duì)nginx配置文件的分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Ubuntu下搭建與配置Nginx服務(wù)

    Ubuntu下搭建與配置Nginx服務(wù)

    這篇文章介紹了Ubuntu下搭建與配置Nginx服務(wù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • nginx啟動(dòng)、配置及測(cè)試圖文詳解(全網(wǎng)最全)

    nginx啟動(dòng)、配置及測(cè)試圖文詳解(全網(wǎng)最全)

    nginx是一個(gè)輕量級(jí)的網(wǎng)頁(yè)服務(wù)器、方向代理服務(wù)器和電子郵件代理服務(wù)器,具有配置靈活、靜態(tài)資源高并發(fā)、系統(tǒng)資源占用少、擁有緩存服務(wù)等優(yōu)點(diǎn),這篇文章主要給大家介紹了關(guān)于nginx啟動(dòng)、配置及測(cè)試的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法

    權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法

    這篇文章主要介紹了權(quán)限問(wèn)題導(dǎo)致Nginx 403 Forbidden錯(cuò)誤的解決方法,本文中導(dǎo)致 403 Forbidden錯(cuò)誤的原因是配置文件中沒(méi)有指明一個(gè)用戶(hù),需要的朋友可以參考下
    2014-08-08
  • Nginx部署vue項(xiàng)目和配置代理的問(wèn)題解析

    Nginx部署vue項(xiàng)目和配置代理的問(wèn)題解析

    這篇文章主要介紹了Nginx部署vue項(xiàng)目和配置代理,需本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,要的朋友可以參考下
    2021-08-08
  • 詳解Nginx啟用proxy_buffer緩沖

    詳解Nginx啟用proxy_buffer緩沖

    本篇文章主要介紹了Nginx啟用proxy_buffer緩沖,Nginx啟用proxy_buffer緩沖,本文詳細(xì)的介紹了基本用法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2018-01-01
  • linux下Nginx+Tomcat負(fù)載均衡配置方法

    linux下Nginx+Tomcat負(fù)載均衡配置方法

    這篇文章主要介紹了linux下Nginx+Tomcat負(fù)載均衡配置方法,需要的朋友可以參考下
    2016-09-09
  • Nginx反向代理中出現(xiàn)502錯(cuò)誤的解決步驟

    Nginx反向代理中出現(xiàn)502錯(cuò)誤的解決步驟

    反向代理是一種服務(wù)器代理的方式,它代理了客戶(hù)端的請(qǐng)求并將請(qǐng)求轉(zhuǎn)發(fā)給后端服務(wù)器,然后將后端服務(wù)器的響應(yīng)返回給客戶(hù)端,但經(jīng)常會(huì)遇到502錯(cuò)誤,所以本文給大家介紹了Nginx反向代理中出現(xiàn)502錯(cuò)誤的解決步驟,需要的朋友可以參考下
    2025-03-03
  • Nginx的反向代理實(shí)例詳解

    Nginx的反向代理實(shí)例詳解

    這篇文章主要介紹了Nginx的反向代理實(shí)例詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Nginx代理Redis哨兵主從配置的實(shí)現(xiàn)

    Nginx代理Redis哨兵主從配置的實(shí)現(xiàn)

    本文主要介紹了Nginx代理Redis哨兵主從配置的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論