Golang笔记

golang 实现反向代理和静态文件服务

用golang 实现两个服务:反向代理服务和静态文件服务。

我用的是goji 框架,

package main

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

	"github.com/golang/glog"

	"github.com/zenazn/goji"
	"github.com/zenazn/goji/web"
)

type handle struct {
	host string
	port string
}

func (this *handle) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	remote, err := url.Parse("http://" + this.host + ":" + this.port)
	if err != nil {
		panic(err)
	}
	proxy := httputil.NewSingleHostReverseProxy(remote)
	proxy.ServeHTTP(w, r)
}

func main() {

	defer glog.Flush()

	// proxy
	h := &handle{host: "www.baidu.com", port: "8080"}
	http.Handle("/proxy/", http.StripPrefix("/proxy/", h))

	// Setup static files
	static := web.New()
	publicPath := "static"
	static.Get("/static/*", http.StripPrefix("/static/", http.FileServer(http.Dir(publicPath))))

	http.Handle("/static/", static)

	goji.Serve()
}

代理使用/proxy

静态文件使用 /static

本文网址: https://golangnote.com/topic/132.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles