最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go實踐反向代理ReverseProxy解析

 更新時間:2023年04月17日 10:35:23   作者:小雄Ya  
這篇文章主要為大家介紹了Go實踐反向代理示例ReverseProxy解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

背景

近期在處理一個關于網(wǎng)關的需求,主要是對用戶的請求轉(zhuǎn)發(fā)到后端的服務器集群中。整個設計思路其實還是很簡單,通過用戶請求過來的路徑轉(zhuǎn)發(fā)到相應的后端服務器上。比如A和B兩個服務,當訪問test.cn:8080 時網(wǎng)關將請求轉(zhuǎn)發(fā)到后端服務A,當訪問test.cn:8080/images 時網(wǎng)關把請求轉(zhuǎn)發(fā)到后端服務B吧。本文主要是實踐下 Go 提供的 httputil 包中的ReverseProxy類型,它可以幫助我們快速地實現(xiàn)HTTP反向代理。

ReverseProxy

ReverseProxy類型是一個HTTP處理器,用于將客戶端的請求轉(zhuǎn)發(fā)到另一個HTTP服務器上。ReverseProxy有兩個主要的字段:Director和Transport。

  • Director函數(shù):用于修改請求的URL和Header,以便將請求發(fā)送到正確的后端服務器上。
Director func(*http.Request)

可以看到 Director 函數(shù)是一個回調(diào)函數(shù),傳遞的參數(shù) Http請求,所在在該函數(shù)中,可以修改請求路徑將其改成真正要請求的服務地址,也可以對 Header 字段進行增加、刪除或修改。

  • Transport字段:用于控制如何與后端服務器通信。Transport字段是非必選字段,如果未指定,則將使用默認的http.Transport。通過 Transport字段可以控制服務之間如何建立連接,服務通信的證書驗證以及設置如何失敗重試請求。就是設置對大連接數(shù),最大空閑連接數(shù)和超時時間等。

ReverseProxy 例子

下面是一個簡單的示例,實現(xiàn)將來自localhost:8080的請求轉(zhuǎn)發(fā)到localhost:8888上:

func main() {
	// 創(chuàng)建反向代理
	proxy := httputil.NewSingleHostReverseProxy(&url.URL{
		Scheme: "http",
		Host:   "localhost:8888",
	})
	// 創(chuàng)建HTTP服務器
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintln(w, "Hello, world!")
	})
	// 將反向代理和HTTP服務器綁定在一起
	http.HandleFunc("/api/", func(w http.ResponseWriter, r *http.Request) {
		proxy.ServeHTTP(w, r)
	})
	// 啟動HTTP服務器
	if err := http.ListenAndServe(":8080", nil); err != nil {
		panic(err)
	}
}

另外啟動一個端口為 8888的服務,其中提供一個 /api 接口

func main() {
	http.HandleFunc("/api", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintln(w, "Hello, From 8888!")
	})
	var err any
	if err = http.ListenAndServe(":8888", nil); err != nil {
		panic(err)
	}
}

在上面的示例中,我們首先創(chuàng)建了一個反向代理,并將其配置為將請求發(fā)送到localhost:8888。接下來,我們創(chuàng)建了一個HTTP服務器,并將其與反向代理綁定在一起。當客戶端請求URL以“/api/”開頭時,服務器將使用反向代理將請求轉(zhuǎn)發(fā)到后端服務器上。如果客戶端請求的URL不以“/api/”開頭,則服務器將返回“Hello, world!”的字符串。

當我們運行該程序并向localhost:8080/api發(fā)送請求時,就可以看看到來自后端服務器localhost:8888 的響應。結(jié)果如下圖所示:

結(jié)論

使用Go語言的httputil.ReverseProxy,我們可以非常輕松地實現(xiàn)HTTP反向代理。通過在Director函數(shù)中修改請求的URL和Header,我們可以將請求發(fā)送到正確的后端服務器上。如果需要,我們還可以配置傳輸實現(xiàn)來控制如何與后端服務器通信。

以上就是Go實踐反向代理ReverseProxy解析的詳細內(nèi)容,更多關于Go反向代理ReverseProxy的資料請關注腳本之家其它相關文章!

相關文章

  • Go語言編譯時為exe添加圖標和屬性信息的方法

    Go語言編譯時為exe添加圖標和屬性信息的方法

    在使用Go語言開發(fā)應用程序時,有個非常方便的地方就是編譯得到的可執(zhí)行文件可以不依賴任何動態(tài)鏈接庫、并且不需要任何運行環(huán)境即可運行,本文給大家介紹Go編譯時為exe添加圖標和屬性信息的方法,需要的朋友可以參考下
    2023-09-09
  • Go語言中JWT的創(chuàng)建和解析操作詳解

    Go語言中JWT的創(chuàng)建和解析操作詳解

    JWT的全名是Json web token,是為了在網(wǎng)絡應用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標準,這篇文章主要介紹了在Go語言中JWT的創(chuàng)建和解析操作,感興趣的同學可以參考下文
    2023-05-05
  • 一文帶你了解Go語言中方法的調(diào)用

    一文帶你了解Go語言中方法的調(diào)用

    這篇文章主要和大家分享一下Go語言中的方法的調(diào)用,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • 在Visual Studio Code中配置GO開發(fā)環(huán)境的詳細教程

    在Visual Studio Code中配置GO開發(fā)環(huán)境的詳細教程

    這篇文章主要介紹了在Visual Studio Code中配置GO開發(fā)環(huán)境的詳細教程,需要的朋友可以參考下
    2017-02-02
  • Golang defer延遲語句的實現(xiàn)

    Golang defer延遲語句的實現(xiàn)

    defer擁有注冊延遲調(diào)用的機制,本文主要介紹了Golang defer延遲語句的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • golang調(diào)試bug及性能監(jiān)控方式實踐總結(jié)

    golang調(diào)試bug及性能監(jiān)控方式實踐總結(jié)

    這篇文章主要為大家介紹了golang調(diào)試bug及性能監(jiān)控方式實踐是總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • Go中函數(shù)的使用細節(jié)與注意事項詳解

    Go中函數(shù)的使用細節(jié)與注意事項詳解

    在Go語言中函數(shù)可是一等的(first-class)公民,函數(shù)類型也是一等的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關于Go中函數(shù)的使用細節(jié)與注意事項的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Go語言實現(xiàn)釘釘發(fā)送通知

    Go語言實現(xiàn)釘釘發(fā)送通知

    本文通過代碼給大家介紹了Go語言實現(xiàn)釘釘發(fā)送通知,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • Golang中實現(xiàn)類似類與繼承的方法(示例代碼)

    Golang中實現(xiàn)類似類與繼承的方法(示例代碼)

    這篇文章主要介紹了Golang中實現(xiàn)類似類與繼承的方法,Go語言中通過方法接受者的類型來決定方法的歸屬和繼承關系,本文通過示例代碼講解的非常詳細,需要的朋友可以參考下
    2024-04-04
  • go env環(huán)境變量配置的使用

    go env環(huán)境變量配置的使用

    在安裝和使用Go時,必須要正確地配置環(huán)境變量,本文主要介紹了go env環(huán)境變量配置的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11

最新評論

澜沧| 江川县| 柳河县| 泾川县| 云林县| 台湾省| 巴彦淖尔市| 集安市| 阳山县| 革吉县| 金寨县| 长武县| 永新县| 南江县| 麻江县| 黔西| 综艺| 财经| 台湾省| 湾仔区| 集安市| 泊头市| 凤庆县| 剑川县| 封开县| 巴林右旗| 清河县| 天镇县| 龙南县| 融水| 南江县| 安达市| 琼结县| 西丰县| 汶上县| 弥勒县| 乌拉特中旗| 邯郸市| 潜山县| 宁陕县| 新河县|