Senior
What is a reverse proxy and how can it be implemented?
sobes.tech AI
Answer from AI
A reverse proxy is a server that accepts requests from clients and forwards them to one or more internal servers. It hides the internal network structure, provides load balancing, caching, SSL termination, and enhances security.
Implementing a reverse proxy can be done using various tools and libraries. In the context of Golang, common approaches include:
- The built-in
net/httppackage with a custom handler that forwards requests. - Frameworks and libraries, such as
httputil.ReverseProxyfrom the standard library.
Example of a simple reverse proxy in Go:
package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func main() {
target, _ := url.Parse("http://localhost:8080")
proxy := httputil.NewSingleHostReverseProxy(target)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
proxy.ServeHTTP(w, r)
})
log.Println("Starting reverse proxy on :9090")
log.Fatal(http.ListenAndServe(":9090", nil))
}
In this example, requests coming to port 9090 will be forwarded to the local server on port 8080.