tgoop.com/go_interview_lib/419
Create:
Last Update:
Last Update:
💬 Как реализовать reverse proxy на Go?
Reverse proxy — это механизм для перенаправления входящих запросов на другой сервер или сервис. Для реализации на Go можно использовать пакет httputil
:
package main
import (
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
targetServer := "example.com"
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: targetServer,
})
http.Handle("/", proxy)
http.ListenAndServe(":8000", nil)
}
В примере входящие запросы на обратный прокси на порту 8000 будут перенаправлены на целевой сервер
example.com
.Мы также можем настроить поведение обратного прокси, реализовав функцию
Director
, которая может быть использована для изменения запроса перед его перенаправлением на целевой сервер.📌 Пример настройки функции Director:
package main
import (
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
targetServer := "example.com"
proxy := httputil.NewSingleHostReverseProxy(&url.URL{
Scheme: "http",
Host: targetServer,
})
proxy.Director = func(req *http.Request) {
req.Header.Set("X-Forwarded-Host", req.Host)
req.Header.Set("X-Origin-Host", targetServer)
req.Host = targetServer
}
http.Handle("/", proxy)
http.ListenAndServe(":8000", nil)
}
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/419