commit dafb693a2c884285aefdf511624f8b4e7439647b Author: Alexis Bouchez Date: Sat Oct 4 01:05:07 2025 +0200 initial commit diff --git a/backend/main.go b/backend/main.go new file mode 100644 index 0000000..e1dddc0 --- /dev/null +++ b/backend/main.go @@ -0,0 +1,29 @@ +package main + +import ( + "encoding/json" + "log" + "net/http" +) + +type Response struct { + Message string `json:"message"` + Headers map[string][]string `json:"headers"` + Path string `json:"path"` +} + +func main() { + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + response := Response{ + Message: "Hello from backend server!", + Headers: r.Header, + Path: r.URL.Path, + } + + w.Header().Set("Content-Type", "application/json") + json.NewEncoder(w).Encode(response) + }) + + log.Println("Backend server démarré sur :8080") + log.Fatal(http.ListenAndServe(":8080", nil)) +} diff --git a/proxy/main.go b/proxy/main.go new file mode 100644 index 0000000..f201aff --- /dev/null +++ b/proxy/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "log" + "net/http" + "net/http/httputil" + "net/url" +) + +func main() { + // URL du serveur backend + target, err := url.Parse("http://localhost:8080") + if err != nil { + log.Fatal(err) + } + + // Créer le reverse proxy + proxy := httputil.NewSingleHostReverseProxy(target) + + // Customiser les requêtes + proxy.Director = func(req *http.Request) { + req.URL.Scheme = target.Scheme + req.URL.Host = target.Host + req.Host = target.Host + req.Header.Set("X-Forwarded-Host", req.Header.Get("Host")) + req.Header.Set("X-Origin-Host", target.Host) + } + + // Gérer les erreurs + proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) { + log.Printf("Erreur proxy: %v", err) + w.WriteHeader(http.StatusBadGateway) + w.Write([]byte("Service indisponible")) + } + + // Démarrer le serveur sur le port 3000 + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + proxy.ServeHTTP(w, r) + }) + + log.Println("Reverse proxy démarré sur :9000") + log.Fatal(http.ListenAndServe(":9000", nil)) +}