Чтобы создать редирект с использованием пакета httputil.ReverseProxy
в Go, вам понадобится настроить объект ReverseProxy
с функцией обратного вызова (Director
), которая будет обрабатывать запросы и изменять их параметры перед отправкой на конечный сервер.
Вот пример кода, который демонстрирует, как правильно сделать редирект для httputil.ReverseProxy
:
package main import ( "log" "net/http" "net/http/httputil" "net/url" ) func main() { // Целевой URL, на который будет делаться редирект targetURL := "http://example.com" // Инициализация объекта `url.URL` с целевым URL target, err := url.Parse(targetURL) if err != nil { log.Fatal(err) } // Создание объекта `httputil.ReverseProxy` с настроенными параметрами proxy := httputil.NewSingleHostReverseProxy(target) // Настройка функции обратного вызова (Director), // которая будет обрабатывать запросы и изменять их параметры перед отправкой на целевой сервер proxy.Director = func(req *http.Request) { // Меняем параметры запроса req.URL.Scheme = target.Scheme req.URL.Host = target.Host req.Host = target.Host } // Создание HTTP-обработчика для прослушивания входящих запросов http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // Проксируем запрос на целевой сервер proxy.ServeHTTP(w, r) }) // Запуск HTTP-сервера log.Println("Server started on http://localhost:8080") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) } }
В этом примере мы инициализируем объект httputil.ReverseProxy
с целевым URL, используя функцию NewSingleHostReverseProxy
. Затем мы настраиваем функцию обратного вызова (Director
), которая будет менять параметры запроса перед его отправкой на целевой сервер. В данном случае мы изменяем схему, хост и заголовок Host
запроса на соответствующие значения целевого URL.
Затем мы создаем HTTP-обработчик, который будет проксировать запросы на целевой сервер, используя метод ServeHTTP
объекта httputil.ReverseProxy
. Наконец, мы запускаем HTTP-сервер, который будет прослушивать входящие запросы на порту 8080.
После запуска сервера вы сможете получить доступ к вашему локальному серверу по адресу http://localhost:8080
, и он будет автоматически перенаправлять все запросы на URL http://example.com
.