Tôi không biết tại sao proxy ngược lại này không hoạt động. Tôi đã nhìn thấy một số ví dụ và tôi không thể tìm thấy bất cứ điều gì sai trái với nó.golang ReverseProxy không hoạt động
package main
import (
"log"
"net/url"
"net/http"
"net/http/httputil"
)
func report(r *http.Request){
log.Print("URL: " + r.URL.Path)
log.Print("Scheme: " + r.URL.Scheme)
log.Print("Host: " + r.URL.Host)
//r.URL.Scheme = "http"
//r.URL.Host = "stackoverflow.com"
//r.Header.Set("Host", "stackoverflow.com")
//log.Print("Header Host: " + r.Header.Get("Host"))
}
func main() {
proxy := httputil.NewSingleHostReverseProxy(&url.URL{Scheme:"http",Host:"myrealserver.com"})
proxy.Director = report
// http.Handle("/", proxy)
error := http.ListenAndServe("mylocalhost.com:8080", proxy)
if(error != nil) {
log.Fatal(error)
}
}
Nó ghi:
2014/04/18 21:32:50 URL: /arg/es
2014/04/18 21:32:50 Scheme:
2014/04/18 21:32:50 Host:
2014/04/18 21:32:50 http: proxy error: unsupported protocol scheme ""
2014/04/18 21:32:51 URL: /favicon.ico
2014/04/18 21:32:51 Scheme:
2014/04/18 21:32:51 Host:
2014/04/18 21:32:51 http: proxy error: unsupported protocol scheme ""
Nếu tôi bỏ ghi chú dòng định nghĩa lại Schema được thông báo lỗi trở thành:
2014/04/18 21:38:05 http: proxy error: http: no Host in request URL
Nếu tôi bỏ ghi chú dòng định nghĩa lại chủ nhà cũng có, sau đó máy chủ đích trở thành stackoverflow.com (ý tôi là, nó không bao giờ sử dụng "myrealserver.com").
Nếu tôi yêu cầu mylocalhost.com:8080/somepath (hoặc thậm chí /) thì tôi nhận được 404 từ Stackoverflow, cho dù stackoverflow.com/somepath có tồn tại hay không. Nó nói:
Couldn't find mylocalhost.com:8080
The Q&A site mylocalhost.com:8080 doesn't seem to exist... yet
Nó không tự động dịch tiêu đề Máy chủ.
Nếu sau đó, tôi bỏ ghi chú dòng đặt (và cột còn lại in) Tiêu đề "Máy chủ". Sau đó, tôi có thể đọc "stackoverflow.com" trong nhật ký, nhưng tôi vẫn nhận được cùng một trang 404 báo cáo rằng tôi đang cố truy cập "mylocalhost.com".
Tôi đang sử dụng go1.2.1 linux/amd64
Làm thế nào là nó mà tôi đang phải làm cho nội dung chương trình như là một proxy?