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

快速掌握Go語言正/反向代理

 更新時間:2022年11月08日 08:25:37   作者:博客猿馬甲哥  
這篇文章主要介紹了快速掌握Go語言正/反向代理的相關(guān)資料,需要的朋友可以參考下

先重溫一下什么叫反向代理,正向代理。

所謂正向,反向代理取決于代理的是出站請求,還是入站請求。

正向代理: 代理的出站請求, 客戶端能感知到代理程序,架構(gòu)上距離客戶端更近。
反向代理: 代理的是入站請求,客戶端認為代理程序就是服務器,客戶端感知不到代理邏輯,架構(gòu)上距離服務端更近。

前幾天利用golang實現(xiàn)了反向代理程序,引出了Host請求頭在反代中的關(guān)鍵作用。

對于proxy.com的請求,都被透明無感代理到A.com

package main

import (
	"fmt"
	"log"
	"net/http"
	"net/http/httputil"
)

func ReverseProxyHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Println("receive a request from:", r.RemoteAddr, r.Header)

	target := "www.baidu.com"
	director := func(req *http.Request) {
		req.URL.Scheme = "https"
		req.URL.Host = target
		req.Host = target
	}
	proxy := &httputil.ReverseProxy{Director: director}
	proxy.ServeHTTP(w, r)
}

func main() {
	fmt.Printf("Starting server at port 8080\n")
	if err := http.ListenAndServe(":8080", http.HandlerFunc(ReverseProxyHandler)); err != nil {
		log.Fatal(err)
	}
}

這幾天剛好遇到了一個正常代理的case, 簡單記錄一下。

package main

import (
	"fmt"
	"log"
	"net/http"
	"net/http/httputil"
)

func ProxyHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Printf("receive a request from {0}  {1}: \n", r.RemoteAddr, r.Header)
	if r.Host != "localhost:8080" {
		director := func(req *http.Request) {
			req.URL.Scheme = "http"
			req.URL.Host = r.Host
			req.Host = r.Host
		}
		proxy := &httputil.ReverseProxy{Director: director}
		proxy.ServeHTTP(w, r)
	} else {
		http.NotFound(w, r)
	}
}

func main() {
	if err := http.ListenAndServe(":8080", http.HandlerFunc(ProxyHandler)); err != nil {
		log.Fatal(err)
	}
}

其中要注意的就是,正向代理式要規(guī)避死循環(huán)代理。

使用該服務作為代理程序,將可以出站訪問任何地址。

使用時,針對httpclient設(shè)置proxy

//adding the proxy settings to the Transport object
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
	}

	//adding the Transport object to the http Client
	client := &http.Client{
		Transport: transport,
	}

下面使用curl指令演示(-x 后接代理地址)

curl -x 127.0.0.1:8080 www.baidu.com

GO快閃#

本文總結(jié)了go語言正反向代理的姿勢。

到此這篇關(guān)于快速掌握Go語言正/反向代理的文章就介紹到這了,更多相關(guān)Go語言正/反向代理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang泛型與反射的應用詳解

    Golang泛型與反射的應用詳解

    如果我想編寫一個可以輸出任何給定類型的切片并且不使用反射的打印功能,則可以使用新的泛型語法。文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • GoLand利用plantuml生成UML類圖

    GoLand利用plantuml生成UML類圖

    本文主要介紹了GoLand利用plantuml生成UML類圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Go?中的空白標識符下劃線

    Go?中的空白標識符下劃線

    這篇文章主要介紹了Go?中的空白標識符下劃線,空白標識符是未使用的值的占位符,由下劃線(_)表示,下文對其相關(guān)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Golang實現(xiàn)DFA算法對敏感詞過濾功能

    Golang實現(xiàn)DFA算法對敏感詞過濾功能

    DFA算法是確定性有限自動機,其特征是,有一個有限狀態(tài)集合和一些從一個狀態(tài)通向另一個狀態(tài)的邊,每條邊上標記有一個符號,通俗的講DFA算法就是把你要匹配的做成一顆字典樹,然后對你輸入的內(nèi)容進行匹配的過程,本文將利用DFA算法實現(xiàn)敏感詞過濾,需要的可以參考一下
    2023-10-10
  • 在Go中復制文件最流行的3種方法

    在Go中復制文件最流行的3種方法

    今天小編就為大家分享一篇關(guān)于在Go中復制文件最流行的3種方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Go語言結(jié)構(gòu)體定義和使用方法

    Go語言結(jié)構(gòu)體定義和使用方法

    這篇文章主要介紹了Go語言結(jié)構(gòu)體定義和使用方法,以實例形式分析了Go語言中結(jié)構(gòu)體的定義和使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 一文帶你深入了解Go語言中的事務

    一文帶你深入了解Go語言中的事務

    事務中止時,你結(jié)束事務了嗎?在開發(fā)時有可能就會犯這樣的錯誤,其問題就是你在提交事務時,如果中間有其他業(yè)務就取消操作,那么事務也關(guān)閉了嗎?本文就來詳細講講
    2023-04-04
  • golang jwt鑒權(quán)的實現(xiàn)流程

    golang jwt鑒權(quán)的實現(xiàn)流程

    本文主要介紹了golang jwt鑒權(quán)的實現(xiàn)流程,包含生成JWT令牌、客戶端存儲和發(fā)送JWT令牌、服務端驗證JWT令牌等,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02
  • golang中iota的用法小結(jié)

    golang中iota的用法小結(jié)

    iota是Go語言中的一個預定義標識符,用于表示const聲明塊中每個常量的偏移值,本文主要介紹了golang中iota的用法小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 深入理解Go語言對象池

    深入理解Go語言對象池

    對象池是一種在編程中用于優(yōu)化資源管理的技術(shù),本文主要介紹了深入理解Go語言對象池,對象池通常通過sync.Pool包或自定義數(shù)據(jù)結(jié)構(gòu)實現(xiàn),下面就來介紹一下
    2024-01-01

最新評論

怀柔区| 浮山县| 新和县| 长顺县| 仁布县| 昌都县| 青海省| 织金县| 商水县| 平陆县| 中江县| 井研县| 晋中市| 新巴尔虎右旗| 柳江县| 尉犁县| 邵阳县| 安泽县| 武冈市| 景洪市| 兴山县| 景德镇市| 罗江县| 六安市| 康保县| 深水埗区| 东莞市| 保康县| 彭山县| 京山县| 白沙| 久治县| 延寿县| 红原县| 沙湾县| 博客| 依兰县| 黔西| 邻水| 维西| 通化市|