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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于haproxy的重定向

發布時間:2024/4/17 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于haproxy的重定向 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. haproxy實現request請求重定向

關于haproxy 請求重定向主要會用到:1. redirect ;2. redir 這兩類重定向配置語法。??

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

redirect一般有兩個指令來執行HTTP重定向:

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

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

?

這兩個指令的語法是相同的,即redirect現在被認為是傳統和配置應該移動到http-request?redirect形式。

一個其它的主要區別是:http-request?redirect使用日志可變格式redirect語句只依賴于靜態字符串

redirect有三種重定向方式:

(1)位置重定向

使用語法如下:

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

?

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

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

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

相關指令參數如下:

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

*?code?<code>(可選):HTTP重定向的狀態代碼來執行。 此選項下的允許的狀態碼如下所示:

狀態碼含義
301永久移動,轉發
302臨時移動,不應該由客戶端進行緩存。?這是默認值,如果沒有code配置。
303像302,但是瀏覽器必須使用GET獲取新位置
307像302,但瀏覽器必須重新使用相同的方法之一,從原來的請求
308像301,但瀏覽器必須重新使用相同的方法比從原始請求所述一個

?

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

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

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

注意:在于瀏覽器中,這是兩個不同的Cookie:NAME和NAME = 以上根據您的流量模式,必須將兩個語句適應。

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

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

?

?

(2)前綴重定向

使用語法如下:

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

?

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

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

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

相關指令參數如下:

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

*?code?<code>(可選):HTTP重定向的狀態代碼來執行。 此選項下的允許的狀態碼如下所示:

狀態碼含義
301永久移動,轉發
302臨時移動,不應該由客戶端進行緩存。?這是默認值,如果沒有code配置。
303像302,但是瀏覽器必須使用GET獲取新位置
307像302,但瀏覽器必須重新使用相同的方法之一,從原來的請求
308像301,但瀏覽器必須重新使用相同的方法比從原始請求所述一個

?

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

?

drop-query?:在執行串聯時從原來的URL刪除查詢字符串

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

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

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

?

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

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

?

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

使用語法如下:

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

?

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

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

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

相關指令參數如下:

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

*?code?<code>(可選):HTTP重定向的狀態代碼來執行。 此選項下的允許的狀態碼如下所示:

狀態碼含義
301永久移動,轉發
302臨時移動,不應該由客戶端進行緩存。?這是默認值,如果沒有code配置。
303像302,但是瀏覽器必須使用GET獲取新位置
307像302,但瀏覽器必須重新使用相同的方法之一,從原來的請求
308像301,但瀏覽器必須重新使用相同的方法比從原始請求所述一個

?

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

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

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

注意:在于瀏覽器中,這是兩個不同的Cookie:NAME和NAME = 以上根據您的流量模式,必須將兩個語句適應。

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

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

如下為一個簡單的實例:

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

?

總結:

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

?

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

使用redir 會將發往backend的站點服務請求均以302狀態響應發給需要重定向的server服務或站點,此時haproxy不需要向后端web server提交請求;需要注意的是,在prefix后面不能使用/,且不能使用相對地址,以避免造成循環,例如:

?

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

上面配置含義:所有發往localhost:81的請求做重定向,重定向到www.bluemobi.cn因此可以實現單臺服務器的重定向

又例如,如果我們要講訪問的站點重定向到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只做跳轉,如客戶端輸入:http://ip?,將會跳轉到指定的頁面上,此時客戶端的頁面的頁面也會跳轉到指定的頁面上,之后所有的請求都會遞交到該站點(前提該站點可以與客戶端通訊),而不再發往haproxy代理站點,haproxy也不需要往后端web server提交客戶端發過來的請求。

?

二. haproxy實現error重定向

格式為: errorfile? 錯誤代碼code? 錯誤代碼響應提示頁路徑

* errorfile 即根據客戶端頁面錯誤code狀態將指定的錯誤狀態頁面提示給客戶端,比如友情提示頁面,一般如下:

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

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

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

總結: 錯誤重定向可以更加友好地提示客戶端錯誤狀態,比如做定制頁面化跳轉,以及網站維護升級等等,當出現錯誤時,可以及時跳轉到預定好錯誤提示頁面上。

轉自http://blog.51cto.com/blief/1752669? ? ? ? ? ? ? ? ? ? ? ??

轉載于:https://www.cnblogs.com/cnyw/p/10113913.html

總結

以上是生活随笔為你收集整理的关于haproxy的重定向的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。