本地回路:
a. localhost https
b. 0. localhost http 当连接不到https时
c. proxy on localhost
通过(c)连接到(a). 当无法连接到(a)的时候测试是否可以连接到(b).
package main
import (
"fmt"
"log"
"net/http"
"net/http/httputil"
"time"
)
func main() {
rProxy := httputil.ReverseProxy{
Director: func(req *http.Request) {
log.Printf("request for %v", req.URL)
},
}
mux := http.NewServeMux()
mux.HandleFunc("/", func(rw http.ResponseWriter, req *http.Request) {
rProxy.ServeHTTP(rw, req)
})
svr := http.Server{
Addr: ":9077",
Handler: mux,
ReadTimeout: 30 * time.Second,
WriteTimeout: 30 * time.Second,
}
res := svr.ListenAndServe()
fmt.Printf("\n%v\n", res)
}
于是这里发现一个问题, 无法代理https.
就这个问题, 目前若从简,则需要借助goproxy来完成. (详细的https走CONNECT通道的代码尚未研究)
(待续)
以下是没有代理, 测试服务器是否就位。
curl -sL http://localhost:4000
curl --insecure -sL https://localhost
curl --insecure -sL https://localhost:443