Reverse proxy в Go. net/http/httputil.

Ответ

httputil.ReverseProxy перенаправляет запросы на другой сервер. NewSingleHostReverseProxy(url) создает прокси к одному бэкенду. В Director меняют Host, Scheme, путь. Используют для балансировки, скрытия бэкендов, добавления заголовков. Для нескольких бэкендов свой Director с выбором по правилу (round-robin, sticky).

target, _ := url.Parse("http://backend:8080")
proxy := httputil.NewSingleHostReverseProxy(target)
proxy.Director = func(r *http.Request) {
    r.URL.Scheme = target.Scheme
    r.URL.Host = target.Host
    r.Host = target.Host
}
http.ListenAndServe(":80", proxy)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.