gin proxy代理

November 24, 2022

这篇文章介绍了如何使用Go语言的Gin框架和httputil.NewSingleHostReverseProxy方法实现代理服务。文章提供了详细的代码示例,展示了如何创建一个反向代理,将请求转发到指定的远程服务器。同时,文章还解释了如何设置请求的头部、主机、URL方案和路径等信息。

代码示例

package main

import (
	"net/http"
	"net/http/httputil"
	"net/url"

	"github.com/gin-gonic/gin"
)

func proxy(c *gin.Context) {
	remote, err := url.Parse("http://www.iarno.cn")
	if err != nil {
		panic(err)
	}

	proxy := httputil.NewSingleHostReverseProxy(remote)

	proxy.Director = func(req *http.Request) {
		req.Header = c.Request.Header
		req.Host = remote.Host
		req.URL.Scheme = remote.Scheme
		req.URL.Host = remote.Host
		req.URL.Path = c.Param("proxyPath")
	}

	proxy.ServeHTTP(c.Writer, c.Request)
}

func main() {

	r := gin.Default()

	//Create a catchall route
	r.Any("/*proxyPath", proxy)

	r.Run(":8080")
}

参考

https://le-gall.bzh/post/go/a-reverse-proxy-in-go-using-gin/

Goproxy代理

IARNO

服务端开发

golang连接mysql数据库导出csv文件

gin当请求对象为数组时,binding不生效问题解决