日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于haproxy的重定向

發(fā)布時(shí)間:2024/4/17 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于haproxy的重定向 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. haproxy實(shí)現(xiàn)request請(qǐng)求重定向

關(guān)于haproxy 請(qǐng)求重定向主要會(huì)用到:1. redirect ;2. redir 這兩類重定向配置語(yǔ)法。??

1. redirect重定向的用法:(redirect通常配置在haproxy acl部分)

redirect一般有兩個(gè)指令來(lái)執(zhí)行HTTP重定向:

http-requets redirect???? (此種方式支持日志變量格式)、

redirect????????????????????????? (此種方式只依賴于靜態(tài)字符串)

?

這兩個(gè)指令的語(yǔ)法是相同的,即redirect現(xiàn)在被認(rèn)為是傳統(tǒng)和配置應(yīng)該移動(dòng)到http-request?redirect形式。

一個(gè)其它的主要區(qū)別是:http-request?redirect使用日志可變格式redirect語(yǔ)句只依賴于靜態(tài)字符串

redirect有三種重定向方式:

(1)位置重定向

使用語(yǔ)法如下:

redirect location?<loc> [code <code>] <option> [{if | unless} <condition>]

?

使用位置重定向,例如下面所示指令可以將用戶重定向到所提供的精確位置,?該位置可以是第三方URL鏈接,也可以是本地web服務(wù)的另一個(gè)訪問(wèn)路徑

1. http-request?redirect?location?<loc>?[code?<code>]?[<option>]?[<condition>]

2. redirect?location?<loc>?[code?<code>]?[<option>]?[<condition>]

相關(guān)指令參數(shù)如下:

*?<loc>?:一個(gè)日志格式變量?(或簡(jiǎn)單的字符串redirect語(yǔ)句)描述了新位置;

*?code?<code>(可選):HTTP重定向的狀態(tài)代碼來(lái)執(zhí)行。 此選項(xiàng)下的允許的狀態(tài)碼如下所示:

狀態(tài)碼含義
301永久移動(dòng),轉(zhuǎn)發(fā)
302臨時(shí)移動(dòng),不應(yīng)該由客戶端進(jìn)行緩存。?這是默認(rèn)值,如果沒(méi)有code配置。
303像302,但是瀏覽器必須使用GET獲取新位置
307像302,但瀏覽器必須重新使用相同的方法之一,從原來(lái)的請(qǐng)求
308像301,但瀏覽器必須重新使用相同的方法比從原始請(qǐng)求所述一個(gè)

?

*?<option>(可選):?可以是以下任何或組合的聲明:

1. set-cookie?NAME[=value] :一個(gè)Set-Cookie頭部被添加到重定向。該cookie被命名為名稱,可以有一個(gè)可選的值值。

2.??clear-cookie?NAME[=]一個(gè)特殊的Set-Cookie頭被添加到重定向。該Cookie名為名稱和最大年齡的cookie參數(shù)設(shè)置為0,目的是為了指示瀏覽器刪除cookie。

注意:在于瀏覽器中,這是兩個(gè)不同的Cookie:NAME和NAME = 以上根據(jù)您的流量模式,必須將兩個(gè)語(yǔ)句適應(yīng)。

*?if | unless?:用于條件判斷

*?<condition>?(可選):用于匹配acl,一般為acl的名稱

?

?

(2)前綴重定向

使用語(yǔ)法如下:

redirect prefix?<loc> [code <code>] <option> [{if | unless} <condition>]

?

使用前綴重定向,將用戶重定向到由concateneting建立了一個(gè)網(wǎng)址<pfx>和完整的原始URI路徑:

1. http-request?redirect prefix <pfx>?[code?<code>]?[<option>]?[<condition>]

2. redirect prefix <pfx>?[code?<code>]?[<option>]?[<condition>]

相關(guān)指令參數(shù)如下:

*?<pfx>一個(gè)日志格式變量?(或簡(jiǎn)單的字符串redirect語(yǔ)句)描述了新的位置前綴。

*?code?<code>(可選):HTTP重定向的狀態(tài)代碼來(lái)執(zhí)行。 此選項(xiàng)下的允許的狀態(tài)碼如下所示:

狀態(tài)碼含義
301永久移動(dòng),轉(zhuǎn)發(fā)
302臨時(shí)移動(dòng),不應(yīng)該由客戶端進(jìn)行緩存。?這是默認(rèn)值,如果沒(méi)有code配置。
303像302,但是瀏覽器必須使用GET獲取新位置
307像302,但瀏覽器必須重新使用相同的方法之一,從原來(lái)的請(qǐng)求
308像301,但瀏覽器必須重新使用相同的方法比從原始請(qǐng)求所述一個(gè)

?

*?<option>(可選):?可以是以下任何或組合的聲明:

?

drop-query?:在執(zhí)行串聯(lián)時(shí)從原來(lái)的URL刪除查詢字符串

append-slash?:配合使用drop-query?,在該URL的末尾添加一個(gè)“/”字符

set-cookie?NAME[=value]?:一個(gè)Set-Cookie頭部被添加到重定向。該cookie被命名為名稱,可以有一個(gè)可選的值值。

clear-cookie?NAME[=] :一個(gè)特殊的Set-Cookie頭被添加到重定向。該Cookie名為名稱和最大年齡的cookie參數(shù)設(shè)置為0,目的是為了指示瀏覽器刪除cookie。

?

*?if | unless?:用于條件判斷

*?<condition>?(可選):用于匹配acl,一般為acl的名稱

?

(3)協(xié)議(計(jì)劃)重定向(比如將http重定向到https)

使用語(yǔ)法如下:

redirect scheme?<sch> [code <code>] <option> [{if | unless} <condition>]

?

使用協(xié)議重定向,例如下面所示指令可以將用戶重定向到所提供的新的http協(xié)議url鏈接,?一般用于非安全鏈接跳轉(zhuǎn)到安全鏈接,比如http跳轉(zhuǎn)到https上

1. http-request?redirect scheme <schloc>?[code?<code>]?[<option>]?[<condition>]

2. redirect scheme <sch>?[code?<code>]?[<option>]?[<condition>]

相關(guān)指令參數(shù)如下:

*?<loc>?:一個(gè)日志格式變量?(或簡(jiǎn)單的字符串redirect語(yǔ)句)描述了新位置;

*?code?<code>(可選):HTTP重定向的狀態(tài)代碼來(lái)執(zhí)行。 此選項(xiàng)下的允許的狀態(tài)碼如下所示:

狀態(tài)碼含義
301永久移動(dòng),轉(zhuǎn)發(fā)
302臨時(shí)移動(dòng),不應(yīng)該由客戶端進(jìn)行緩存。?這是默認(rèn)值,如果沒(méi)有code配置。
303像302,但是瀏覽器必須使用GET獲取新位置
307像302,但瀏覽器必須重新使用相同的方法之一,從原來(lái)的請(qǐng)求
308像301,但瀏覽器必須重新使用相同的方法比從原始請(qǐng)求所述一個(gè)

?

*?<option>(可選):?可以是以下任何或組合的聲明:

1. set-cookie?NAME[=value] :一個(gè)Set-Cookie頭部被添加到重定向。該cookie被命名為名稱,可以有一個(gè)可選的值值。

2.??clear-cookie?NAME[=]一個(gè)特殊的Set-Cookie頭被添加到重定向。該Cookie名為名稱和最大年齡的cookie參數(shù)設(shè)置為0,目的是為了指示瀏覽器刪除cookie。

注意:在于瀏覽器中,這是兩個(gè)不同的Cookie:NAME和NAME = 以上根據(jù)您的流量模式,必須將兩個(gè)語(yǔ)句適應(yīng)。

*?if | unless?:用于條件判斷

*?<condition>?(可選):用于匹配acl,一般為acl的名稱

如下為一個(gè)簡(jiǎn)單的實(shí)例:

acl http ? ? ?ssl_fc,not
http-request redirect scheme https if http

?

總結(jié):

redirect三種重定向可以混合使用,比較常用的有redirect prefix 和 redirect location這兩種方式,從某種理解上可以交差使用;

?

2. redir重定向的用法:(redir通常配置在haproxy backend部分)

使用redir 會(huì)將發(fā)往backend的站點(diǎn)服務(wù)請(qǐng)求均以302狀態(tài)響應(yīng)發(fā)給需要重定向的server服務(wù)或站點(diǎn),此時(shí)haproxy不需要向后端web server提交請(qǐng)求;需要注意的是,在prefix后面不能使用/,且不能使用相對(duì)地址,以避免造成循環(huán),例如:

?

frontend ?main *:80 ? ?default_backend ? ? ? ? ? ? appbackend app ? ?balance ? ? roundrobin ? ?server node1 127.0.0.1:81 check weight 3 redir http://www.bluemobi.cn

上面配置含義:所有發(fā)往localhost:81的請(qǐng)求做重定向,重定向到www.bluemobi.cn因此可以實(shí)現(xiàn)單臺(tái)服務(wù)器的重定向

又例如,如果我們要講訪問(wèn)的站點(diǎn)重定向到baidu.com

frontend ?main *:80 ? ?default_backend ? ? ? ? ? ? appbackend app ? ?balance ? ? roundrobin ? ?server node1 127.0.0.1:81 check weight 3 redir http://www.baidu.cn

注意:redir只做跳轉(zhuǎn),如客戶端輸入:http://ip?,將會(huì)跳轉(zhuǎn)到指定的頁(yè)面上,此時(shí)客戶端的頁(yè)面的頁(yè)面也會(huì)跳轉(zhuǎn)到指定的頁(yè)面上,之后所有的請(qǐng)求都會(huì)遞交到該站點(diǎn)(前提該站點(diǎn)可以與客戶端通訊),而不再發(fā)往haproxy代理站點(diǎn),haproxy也不需要往后端web server提交客戶端發(fā)過(guò)來(lái)的請(qǐng)求。

?

二. haproxy實(shí)現(xiàn)error重定向

格式為: errorfile? 錯(cuò)誤代碼code? 錯(cuò)誤代碼響應(yīng)提示頁(yè)路徑

* errorfile 即根據(jù)客戶端頁(yè)面錯(cuò)誤code狀態(tài)將指定的錯(cuò)誤狀態(tài)頁(yè)面提示給客戶端,比如友情提示頁(yè)面,一般如下:

errorfile 403 /etc/haproxy/errorfiles/403.http
errorfile 500 /etc/haproxy/errorfiles/500.http
errorfile 502 /etc/haproxy/errorfiles/502.http
errorfile 503 /etc/haproxy/errorfiles/503.http
errorfile 504 /etc/haproxy/errorfiles/504.http

例如:如果想訪問(wèn)403頁(yè)面重定向到其他頁(yè)面的話,則參考以下配置

frontend web_server
? ?bind *:80
? ?default_backend webserver
? ?acl badguy src 10.0.10.1
? ?block if badguy
? ?errorloc 403 http://baidu.com/ ? ? #定義錯(cuò)誤頁(yè)面重定向

總結(jié): 錯(cuò)誤重定向可以更加友好地提示客戶端錯(cuò)誤狀態(tài),比如做定制頁(yè)面化跳轉(zhuǎn),以及網(wǎng)站維護(hù)升級(jí)等等,當(dāng)出現(xiàn)錯(cuò)誤時(shí),可以及時(shí)跳轉(zhuǎn)到預(yù)定好錯(cuò)誤提示頁(yè)面上。

轉(zhuǎn)自http://blog.51cto.com/blief/1752669? ? ? ? ? ? ? ? ? ? ? ??

轉(zhuǎn)載于:https://www.cnblogs.com/cnyw/p/10113913.html

總結(jié)

以上是生活随笔為你收集整理的关于haproxy的重定向的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。